Como verificar se um número é primo?

2013/05/06

Aqui temos um exemplo de como implementar a verificação de números primos em Java:

public class Exemplo {

    public static void main(String[] args) {
        // laço para imprimir 1000 números primos
        for (int numero = 0, primos = 0; primos < 1000; numero++) {
            if (Primes.isPrime(numero)) {
                primos++;
                System.out.println(primos + ":    " + numero);
            }
        }
    }
}

Classe utilitária Primes utilizada no exemplo:

/**
 * Classe utilit&aacute;ria para verifica&ccedil;&atilde;o de n&uacute;meros primos.
 * 
 * @author Ricardo Artur Staroski
 */
public final class Primes {

    /**
     * Verifica se o n&uacute;mero informado &eacute; primo
     * 
     * @param number O n&uacute;mero a ser verificado
     * 
     * @return <tt>true</tt> se o n&uacute;mero informado for primo e <tt>false</tt> caso contr&aacute;rio
     */
    public static boolean isPrime(long number) {
        number = Math.abs(number);
        // se o número é par, não pode ser primo
        if (number % 2 == 0) {
            return false;
        }
        // verificar se este número ímpar é primo
        for (long i = 3; i * i <= number; i += 2) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    // não faz sentido instanciar esta classe
    private Primes() {}
}