[quote] Boa noite, fiz um programa para discobrir se um número é primo, porem quando informo um valor muito alto “prico”, como ex: 2147483647 ele demora muito para retornar a resposta, gostaria de saber se tem alguma forma de agilizar este processo.
O codigo que fiz é o seguinte:[/quote]
[code]public class Exercicio1003 {
public static void main(String[] args) {
java.util.Scanner scan = new java.util.Scanner(System.in);
java.io.PrintStream saida = System.out;
saida.print("Digite SAIR para sair do programa");
while(true){
long num = 0;
try{
saida.print("\n\nInforme um número Inteiro:");
String st = scan.nextLine();
if(st.equalsIgnoreCase("sair"))System.exit(0);
num = Long.parseLong(st);
if(num <= 1)throw new IllegalArgumentException("O número deve ser maior que 1!");
}catch(NumberFormatException nfe){
saida.print("Erro: Dado Inválido");
continue;
}catch(IllegalArgumentException iae){
saida.print("Erro: " + iae.getMessage());
continue;
}
String resp = "";
if(num % 2 == 1){
for(long i = 2; i < num/2; i++){
if(num % i == 0){
resp = "NÂO é um número primo";
break;
}
resp = "É um número primo";
}
}
else resp = "NÂO é um número primo";
if(num == 2)resp = "É um número primo";
saida.print(resp);
}
}
}
[/code]