Problema de programação

Galera, estou com uma dúvida em um exercício que não sei se uso vetor ou outra coisa. O exercício fala sobre a capacidade de alguns números. Exemplo:
3025 => 30 + 25 = 55. 55^2 = 3025.

Fazer um programa dos números de 1000 á 9999 que tenha essa propriedade
Exercício precisa ser feito em java (De preferência na IDE netbeans)

Devo ser muito burro. Não entendi o que eh essa capacidade de alguns números.

Não entendi o que é essa fórmula também.

Eu acho que você deve pegar o número de 4 dígitos quebrar em 2, depois somar, por fim elevar ao quadrado.
Ex: 1000

  • 10 + 00 = 10
  • 10² = 100
  • Se o resultado for igual ao valor original, então ele tem essa “capacidade”!

Um for resolveriam e você ia imprimir só os números que tem essa propriedade.

Não seria bem uma capacidade e sim uma característica.

Mas bem, o que foi falado acima deve ser suficiente para você conseguir resolver o problema. Caso não consiga resolver fale e tentaremos ajudar.

OBS: A uma forma matemática e uma forma com métodos do Java.

Sim, mas estou com dificuldade justamente para fazer isso. Como eu quebraria o número ?

Se pegar um número de 4 dígitos e separa-los em 2 grupos e somar esses grupos. o quadrado dele dá exatamente o numero dito inicialmente.

Grupo 1 - 30

Grupo 2 - 25

(Grupo 1 + Grupo 2) = 55

55 elevado ao quadrado é 3025

1 curtida

Exato, preciso que o Java imprime os números de 1000 a 9999 que têm essa característica.

O número 1000, como você exemplificou, é um exemplo de número que não tem tal característica.

Tem várias formas, você poder usar o métodos substring() ou aplicar o cálculo abaixo (já que são 4 digitos), lembrando também, que divisão entre inteiros gera um inteiro também:

N = 1998
d1 = N/100    saída: 1998/100 = 19
d2 = N % (d1 * 100)   saída: 1998 % 1900 = 98

Fiz aqui e existe três numero é isso mesmo?

class Main {
  public static void main(String[] args) {
     
     for(int i = 1000; i<=9999; i++){
       
        int d1 = i / 100;
        int d2 = i % (d1 * 100);
        int soma = d1 + d2;
        
        if(Math.pow(soma, 2) == i){                                     
          System.out.printf("%d+%d = %d^2 = %d\n",d1,d2,soma,i);
        }
     }
  }
}

1 curtida

Creio que sim, pois fiz de uma maneira diferente e resultou no mesmo:

public static void main(String[] args) {
    check();
}

public static void check() {

    for (int i = 1000; i <= 9999; i++) {
        int conj1 = Integer.parseInt((i + "").substring(0, 2));
        int conj2 = Integer.parseInt((i + "").substring(2, 4));
        int value = (int) Math.pow((conj1 + conj2), 2);
        if (value == i) {
            System.out.println(conj1 + "+" + conj2 + " = " + (conj1 + conj2) + "^2 = " + value);
        }

    }

}

Resultado:

20+25 = 45^2 = 2025
30+25 = 55^2 = 3025
98+1 = 99^2 = 9801

2 curtidas

Fiz da primeira maneira que você indicou, também deu o mesmo resultado. Muito obrigado. Estava tentando usar vetor, mas por vetor não é tão eficiente. Vlw mesmo.