Hola a todos, hoy os voy a explicar como podemos saber si un número es primo o no.
Un número primo es aquel que solo es divisible entre si mismo y 1.
Los números negativos no pueden ser primos.
Ejemplos de números primos: 11, 13, 17, 19, etc.
La idea que se puede plantear para hacerlo en Java, es contar el número de divisores que hay entre el número – 1 hasta el 2, si no hay ninguno es que es primo.
Otra forma curiosa de hacerlo, es empezar desde la raíz cuadrada del número (Math.sqrt), esto es algo más optimo ya que hacemos menos iteracciones.
Os dejo una función ya preparada para que la podáis copiar en vuestra aplicación:
/** * Indica si un numero es primo * * @param numero Número que queremos saber si es primo o no * @return True = es primo */ public static boolean esPrimo(int numero) { if (numero <= 1) { return false; } int contador = 0; //bucle que cuenta los numeros divisibles for (int i = (int) Math.sqrt(numero); i > 1; i--) { if (numero % i == 0) { contador++; } } return contador < 1; }
Veamos un ejemplo:
public class NumeroPrimos { public static void main(String[] args) { int[] numeros = {11, 19, 20, 50, 61, 100}; for (int i = 0; i < numeros.length; i++) { if (esPrimo(numeros[i])) { System.out.println("El número " + numeros[i] + " es primo"); } else { System.out.println("El número " + numeros[i] + " no es primo"); } } } /** * Indica si un numero es primo * * @param numero Número que queremos saber si es primo o no * @return True = es primo */ public static boolean esPrimo(int numero) { if (numero <= 1) { return false; } int contador = 0; //bucle que cuenta los numeros divisibles for (int i = (int) Math.sqrt(numero); i > 1; i--) { if (numero % i == 0) { contador++; } } return contador < 1; } }
Este es el resultado:
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.
si en vez de usar los numeros de ese ejemplo, quiero usar cualquier numero como lo hago?