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.
SkyG0D
Agosto 5, 2020, 1:25pm
#4
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
SkyG0D
Agosto 5, 2020, 5:57pm
#10
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.