Alguém me ajuda nessa resolução em Java/eclipse

Faça um laço for que inicia uma variável com o valor 1000 e incremente-a enquanto ela for menor que 9999.
Para dividir os números (3025 virar 30 e 25), você pode transformar o número em uma String usando a classe Integer e dividi-la em 2 partes usando o método String.substring(). Depois disso, você pode transformar as Strings divididas em números usando, também, a classe Integer.

O final é fácil: Some os números e eleve essa soma ao quadrado usando Math.pow() e verifique se o resultado é igual ao número que o laço for te deu, aquele que você dividiu no meio.
Se for igual, imprime esse número.

Caso tenha dúvida na utilização dos métodos, tem muitos tutoriais e documentação na internet, não precisa nem pesquisar muito.

1 curtida

Não precisa dar essa volta toda. Transformar o número em string, para depois pegar partes dessa string e converter de volta para número é uma volta desnecessária, além de ser muito mais ineficiente (por ficar alocando várias strings à toa), na minha humilde opinião não é a melhor solução. *

Dá pra resolver de forma muito mais simples (e eficiente) usando a boa e velha matemática. Como os números estão todos entre 1000 e 9999, então eles sempre têm 4 dígitos. Assim, para pegar os dois primeiros, basta dividir por 100. E para obter os dois últimos, basta pegar o resto da divisão por 100.

Depois é só somar, elevar ao quadrado e ver se é igual ao número original:

for (int n = 1000; n <= 9999; n++) {
    int parte1 = n / 100; // os 2 primeiros dígitos
    int parte2 = n % 100; // os 2 últimos dígitos
    int soma = parte1 + parte2;
    if (soma * soma == n) { // se o quadrado da soma é igual ao número, imprime
        System.out.println(n);
    }
}

A saída é:

2025
3025
9801

* É claro que para um programa curto como esse, a diferença de desempenho será imperceptível, mas em programas maiores, ficar criando strings à toa gera alocações desnecessárias que podem sim afetar o desempenho. Geralmente a solução matemática é preferível nesses casos.

1 curtida

Não é que é verdade? Vivendo e aprendendo.