Números primos en Java
[MicroPost] En este micro articulo aprenderemos como determinar si un número es primo o no en Java, puedes encontrar el código funcional al final en nuestro repositorio de Github.
Que son los números primos
En términos matemáticos, un número primo es un número natural mayor que 1, el cual que tiene únicamente dos divisores distintos: él mismo número y el 1.
Algoritmo
El siguiente método nos permite verificar si un número es primo o no.-
1
2
3
4
5
6
7
8
9
10
11
12
public static boolean isPrime(int n)
{
// Verificamos si es multiplo de 2
if(n % 2 == 0) return false;
// Recorremos todos los numeros impares
for(int i = 3; i * i <= n; i += 2){
if(n % i == 0) return false;
}
return true;
}
El algoritmo esta optimizado para obtener el resultado esperado en el menor tiempo posible, por ejemplo en la linea 4 verificamos si el número es par, ya que los números primos son impares, de esta forma obtendremos un resultado rápidamente.-
1
2
// Verificamos si es multiplo de 2
if(n % 2 == 0) return false;
En caso de que no sea par, entramos a un ciclo for, donde empezamos a verificar a partir del número 3 (recuerda que un numero primo es mayor a 1 y no debe ser par, por eso no tomamos en cuenta el número 1 y 2).-
1
2
3
4
// Recorremos todos los numeros impares
for(int i = 3; i * i <= n; i+=2){
if(n % i == 0) return false;
}
En cada iteración verificamos si el número dado (n) es divisible por el dato obtenido en i, si es así, el número no es primo.-
1
if(n % i == 0) return false;
Casos de uso
Para verificar su funcionamiento, creamos un método para ingresar el dato.-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static int enterData()
{
Scanner scan = new Scanner(System.in);
int n;
try{
n = scan.nextInt();
return n;
} catch(Exception e) {
System.out.println("Ingrese un numero");
return enterData();
}
}
Y en el método main realizamos el proceso.-
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args)
{
// Obtenemos el numero
System.out.print("Ingrese un numero: ");
int n = enterData();
// Verificamos si es primo
if(isPrime(n)) System.out.println("Es primo");
else System.out.println("No es primo");
}
Ahora si ejecutamos el programa y probamos con el conjunto de datos { 25, 29 } obtendremos el siguiente resultado.-
1
2
3
4
Ingrese un numero: 25
No es primo
Ingrese un numero: 29
Es primo
Código de ejemplo
Puedes encontrar el código completo en el siguiente enlace (repositorio de github).-
Conclusiones
Si te encontraste útil este articulo, por favor compártelo para que pueda llegar a más personas.
Que tengan feliz código