Observe a seguinte propriedade que alguns números maiores que 1000 e menores que 9999 possuem:
Número: abcd(ab) + (cd) = (ef)
(ef)**2 = abcd
Exemplo: 3025
30+25 = 55
55**2 =3025
Faça um programa que imprima todos os números que satisfaçam esta propriedade
Código Java
//Autor: Thiago Campos
//Data: 14.09.2012
/**
*
* @author Thiago
*
import javax.swing.JOptionPane;
/
public class NumSatisfaz {
public static void main(String[] args){
//variaveis
String todos ="";
String abcdStr ="";
int abcd = 1000;
int ab = 0;
int cd = 0;
int ef = 0;
int cont = 0; //contador
//processamento
while(abcd <=9999){
abcdStr = String.valueOf(abcd); //converte o vlr int para String
//quebra a String em 2 termos e converte para int
ab = Integer.parseInt(abcdStr.substring(0, 2));
cd = Integer.parseInt(abcdStr.substring(2, 4));
//soma dos termos int
ef = ab + cd;
//verifica se o quadrado da soma é = valor de entrada
if (Math.pow(ef, 2) == abcd){
cont++; //conta a qtd de vlr
todos += String.valueOf(abcd) + " "; //guarda tds os vlr iguais
}
abcd++; //incrementa o valor inicial
} //fim do while
//saida
JOptionPane.showMessageDialog(null, "Apenas " + cont + " valor(es) satisfaz(em) a "
+ "\ncondição: " + " " + todos);
} //fim do main
} //fim da classe
Nenhum comentário:
Postar um comentário