Gostaria de saber se alguem tem algum programinha q receba um int > 0 e diga se é primo ou não.
agradeço,
Paulo Adriano
Gostaria de saber se alguem tem algum programinha q receba um int > 0 e diga se é primo ou não.
agradeço,
Paulo Adriano
Número primo nada mais é do que um número dividido por ele mesmo e por 1 somente.
Primeiramente gostaria de demonstrar a facilidade de se calcular se o número é primo:
Kkkkkkkkk.
Tá na Wikipédia essa equação! Basta passar para Java…
Tá tá, muito engraçado! Vamos ao que interessa.
Fiz a algumas semanas como exercício do livro Deitel:
public class Exercicio625 {
public void numerosPrimos(){
for(int i = 2; i <= 10000 ; i++){
checandoPrimo(i);
}
}//final do método numerosPrimos.
private void checandoPrimo(int numero){
int total = 0;
for(int i = 2; i <= (numero-1); i++){
if((numero % i) == 0){
++total;
}
}
if(total == 0){
System.out.printf("O numero %d é primo.\n", numero);
}
}//final do método checandoPrimo.
}
E para executar:
public class Exercicio625Teste {
public static void main(String[] args) {
Exercicio625 objeto = new Exercicio625();
objeto.numerosPrimos();
}
}
Ele vai checando números por número de 2 a 10.000 e chamando um método a parte. Esse método, que conterá um segundo loop, irá verificar do 2 até este número menos um se há algo divisível. Se tiver, um contador será incrementado. Então se ele for incrementado significa que ele não é primo, agora se ele não for incrementado e permanecer ZERO, então exibirá a mensagem de que é primo!
Quem tiver alguma idéia de como fazer mais inteligentemente também manda a ver aí! Manda bala! Mas esse funciona.
Abraço.
Um exemplo exótico envolvendo cálculos de primos, futures e callables:
http://www.guj.com.br/posts/list/50321.java#264645
Você pode usar a função “isProbablyPrime” da classe BigInteger para checar se um número é com certeza quase total um primo. (Essa função pode dar “falsos positivos”).
Por exemplo:
import java.math.BigInteger;
class TesteIsProbablyPrime {
public static void main(String[] args) {
BigInteger bi = new BigInteger ("14142135623730950488016887242529");
System.out.println ("O número " + bi + " provavelmente" + (bi.isProbablePrime (20) ? " é " : " não é ") + "primo");
}
}
O problema é que essa função pode dar “falsos positivos”