Primo ou nào?

Gostaria de saber se alguem tem algum programinha q receba um int > 0 e diga se é primo ou não.

agradeço,

Paulo Adriano

Olá

Google -> http://www.unicamp.br/~hans/mc102/java/algoritmo/_sePrimo.html

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.

Olá

http://www.mersenne.org/math.htm

Procure na web por “sieve of Atkin”

[]s
Luca

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” :stuck_out_tongue: