Boa noite a todos, estava tentando fazer uma função recursiva para saber se o número é ou não primo, porém em alguns números (9, 15, …), ao identificar que não é um número primo e executar o ultimo return como false, a função é executada mais uma vez e reatribuída como o return true. Alguém por favor me mostra aonde estou errando, achei outros métodos de como fazer essa verificação, porém fiquei intrigado com esse caso.
[code]
package primo;
import java.util.Scanner;
public class Primo {
public static void main(String[] args) {
Scanner leia = new Scanner(System.in);
System.out.print("Informe um número: ");
int num = leia.nextInt();
boolean resultado = primo(num, 1);
if(resultado){
System.out.println(num+" é primo");
} else {
System.out.println(num+" não é primo");
}
}
public static boolean primo(int a, int b) {
b++;
boolean condicao = true;
if(a>3){
if(a%b==0 && a!=b) {
condicao = false;
} if(a == b){
condicao = true;
}else if(condicao){
primo(a, b); // <--- função recursiva
}
}
return condicao; //<--- sempre que esse return é executado ele volta mais uma vez direto para a função recursiva, que reatribui o valor true em condição
}
}[/code]