Mark_Ameba:
Alias.. se não me engano esses são os numeros triangulares.
Um dia criei uma formula para calcula-los mas perdi o papel =/
Uma fórmula? O_o
O máximo que consegui foi armazenar os 5 primeiros num vetor:
int x = 0, soma = 0, a = 0, cont = 0;
int[] perfeito = new int[5];
boolean flag = true;
while (flag) {
if (cont == perfeito.length) {
flag = false;
for (cont = 0; cont < perfeito.length; cont++) {
System.out.println("Perfeito " + (cont + 1) + ": "
+ perfeito[cont]);
}
break;
}
for (a = 1; a <= (x/2); a++) {
if (x%a == 0) {
soma = soma + a;
}
}
if (soma == x) {
perfeito[cont] = x;
cont++;
}
soma = 0;
x++;
}
Se eu colocar o vetor com 10 posições por exemplo, deve demorar quase 10 hora pra ele fazer o serviço..
Porque usa a recusividade... Mas com uma fórmula, a velocidade do algorítimo não mudaria, pois seria apenas matemática (+, X, / , -) e não teria nenhuma recursividade!
Então, FAZ A FORMULA AE DINOVO! UHAhuauah
Procurei na net e não axei nenhuma fórmula não... Então se vc conseguir, deve conseguir um prêmio nobel, ou uma boa grana em Harvard ou Princeton! hUAhuhaua
Depois dessa tenta resolver P versus NP