Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera,começa mais um semestre da faculdade e cá estou eu lhes enchendo o saco novamente hahahha.
O exercício pede que eu faça um código que imprima na tela os 5 primeiros números perfeitos,que pra quem ñ sabe é um numero que a soma dos seus divisores(menos ele msm) é igual ao próprio numero,ex: 1+2+3=6.
O netbeans acusa o seguinte erro:
**Exception in thread "main" java.lang.ArithmeticException: / by zero
at javaapplication1.JavaApplication1.main(JavaApplication1.java:13)
C:\Users\poligno\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)**
Meu código está assim:
>
package javaapplication1;
public class JavaApplication1 {
public static void main(String[] args){
int aux=0,cont=0,num=1;
while(cont<5){
for(int i=0;i<num;i++){ //num guarda o numero que está sendo testado
if(num%i==0) aux=aux+i; //aux guarda a soma dos divisores
}
if(aux==num){ //compara se a soma dos divisores é igual ao numero testado
System.out.println(num); //se sim,ele printa o numero atual que está sendo testado
cont=cont+1; //e incrementa o contador de numeros perfeitos encontrados
}
aux=0; //'somador de divisores' é zerado
num=num+1; //variavel num eh incrementada sempre ao fim do código
}
}
}
Grato!
>
É porque estava havendo uma divisão por zero como o própio log diz
"java.lang.ArithmeticException: / by zero"
na sua condição você pede o para pegar o resto da divisão, e seu looping começa em zero.
eu não vou dar a resposta de como consertar porque ai já é de mais :P
>
É porque estava havendo uma divisão por zero como o própio log diz
"java.lang.ArithmeticException: / by zero"
na sua condição você pede o para pegar o resto da divisão, e seu looping começa em zero.
eu não vou dar a resposta de como consertar porque ai já é de mais :P
Nem precisa mano,essa dica já foi o suficiente,e esse n era o único erro do código ,segue o código atualizado caso outros newbies tenham a mesma dúvida e esbarrem nesse tópico:
>
package javaapplication1;
import java.util.Scanner;
public class JavaApplication1 {
public static void main(String[] args) {
int aux=0, cont=0, num=2;
while(cont<5){
for(int i=1; i<num; i++){
if(num%i==0)
aux+=i;
}
if(aux==num){
System.out.println("Numero perfeito: "+num);
cont++;
}
aux=0;
num+=2;
}
}
}
:D :D :D
É porque estava havendo uma divisão por zero como o própio log diz
"java.lang.ArithmeticException: / by zero"
na sua condição você pede o para pegar o resto da divisão, e seu looping começa em zero.
eu não vou dar a resposta de como consertar porque ai já é de mais :P