Números primos são aqueles que têm exatamente dois divisores: 1 e ele mesmo. Trabalhar com números primos é comum em áreas como matemática, criptografia e programação de algoritmos. Neste post, vamos aprender como gerar números primos em Java, criando uma função para verificar se um número é primo e, em seguida, listar os números primos dentro de um intervalo.
Passo 1: Verificar se um número é primo
Para verificar se um número é primo, basta testá-lo em relação aos divisores de 2 até a sua raiz quadrada. Essa abordagem economiza tempo e processamento, pois elimina divisões desnecessárias.
public class NumerosPrimos {
// Função que verifica se um número é primo
public static boolean ehPrimo(int numero) {
if (numero <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(numero); i++) {
if (numero % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int numero = 17;
if (ehPrimo(numero)) {
System.out.println(numero + " é um número primo.");
} else {
System.out.println(numero + " não é um número primo.");
}
}
}
Explicação do código:
- Laço For: Verifica divisores de
2
até a raiz quadrada do número. - Math.sqrt(): Calcula a raiz quadrada do número, reduzindo as iterações necessárias.
Se o número tiver algum divisor nesse intervalo, ele não é primo. Caso contrário, ele é considerado primo.
Passo 2: Listar números primos em um intervalo
Agora que temos uma função para verificar se um número é primo, podemos utilizá-la para listar todos os números primos em um intervalo específico.
public class ListaNumerosPrimos {
public static boolean ehPrimo(int numero) {
if (numero <= 1) return false;
for (int i = 2; i <= Math.sqrt(numero); i++) {
if (numero % i == 0) return false;
}
return true;
}
public static void listarPrimos(int limiteInferior, int limiteSuperior) {
System.out.println("Números primos entre " + limiteInferior + " e " + limiteSuperior + ":");
for (int i = limiteInferior; i <= limiteSuperior; i++) {
if (ehPrimo(i)) {
System.out.print(i + " ");
}
}
}
public static void main(String[] args) {
listarPrimos(10, 50); // Exemplo: listando primos entre 10 e 50
}
}
Saída esperada:
Números primos entre 10 e 50:
11 13 17 19 23 29 31 37 41 43 47
Explicação do código:
- Função listarPrimos: Recebe um intervalo e utiliza a função
ehPrimo()
para verificar cada número dentro do limite. - Laço For: Itera pelos números do limite inferior ao superior, imprimindo os primos encontrados.
Outro exemplo prático
import java.util.Scanner;
public class NumerosPrimos {
public static void main(String[] args)
{
int n, aux=0;
Scanner sc = new Scanner(System.in);
System.out.print("Digite um número inteiro: ");
n = sc.nextInt();
//calcula a qtde. de números que são divisíveis por 'n' (aux)
for(int i=1; i<=n; i++)
{
if(n % i == 0)
aux+=1;
}
int[] numerosDivisiveis; //define o vetor, sendo apenas uma referência
numerosDivisiveis = new int[aux]; //aloca x posições (aux) p/ o vetor
if(aux > 2) //se qtde de números divisíveis por 'n' (aux) for maior que 2...
{
for(int i=0, j=1; i<=aux; j++)
{
/* Se o resto da divisão por 'j' (contador do 1 até 'aux')
* do número informado for igual a zero (for divisível)... */
if(n % j == 0)
{
numerosDivisiveis[i] = j; //armazena esse valor no vetor
//soma uma unidade ao contador do 'aux' (qtde. de posições do vetor)
i++;
}
/*Se todo o vetor for preenchido, parar com o laço para se evitar o loop
infinito
if(i == aux){ break; }
}
System.out.print(n + " não é primo!\n");
System.out.print(n + " eh divisivel por: ");
for(int i=0; i<aux-1; i++) //Mostra os números divisíveis por 'n'
{
System.out.print(numerosDivisiveis[i] + ", ");
}
System.out.print("e "+ numerosDivisiveis[aux-1] + ".\n\n");
}
else //Se o valor informado for primo...
{
System.out.print(n + " é primo!\n");
System.out.print(n + " eh divisivel por 1 e por ele mesmo.\n\n");
}
}
}
Trabalhar com números primos em Java é uma excelente forma de aprender sobre algoritmos e otimização.
O uso de Math.sqrt()
para reduzir o número de operações em verificações de primalidade torna o algoritmo mais eficiente, especialmente para intervalos grandes.
Domine as boas práticas com projetos práticos que vão te ajudar a desenvolver sistemas e se destacar no mercado de programação.
Clique na imagem abaixo e conheça mais detalhes do nosso curso:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários