Gente, estou tentando criar um método que retorne true caso o número for primo e false caso seja falso. Segue o método:
private static int i = 2;
public static boolean primo(int num){
boolean resultado = true;
while(i < num){
if(num % i == 0){
resultado = false;
break;
}
++i;
}
return resultado;
}
Se usar esse método inserindo o parametro manualmente, dá certo. Mas quando eu coloco dentro de um loop pra retornar todos os primos de 1 até 1000, ele retorna todos os números como true. Exemplo:
for(int a = 2; a < 1000; a++)
{
System.out.println(a + "-" + Classe.primo(a));
}
‘-’ Alguém sabe o motivo? Já quebrei a cabeça aqui e nada.
@edit
Editei pra formular melhor a perguntar, e inseri o break; no if.
@edit2
Troquei o while por um for e deu certo. Mas alguém sabe me explicaro porque estava acontecendo isso? kkk
Segue como ficou o método da maneira certa:
public static boolean primo(int num){
boolean resultado = true;
for(int i = 2; i < num ; ++i){
if(num % i == 0){
resultado = false;
}
}
return resultado;
}
