Aquí les comparto una función más optimizada para comprobar si un número es primo o no, utilizando la criba de Eratóstenes
En esta función, primero comprobamos si el número es menor o igual a 1
function esPrimo(numero) {
if (numero <= 1) {
return false;
}
// Inicializamos un arreglo con todos los números desde 2 hasta el número dado
const numeros = Array.from({ length: numero - 1 }, (_, i) => i + 2);
// Iteramos sobre los números del arreglo y eliminamos sus múltiplos
for (let i = 0; i < numeros.length; i++) {
const primoActual = numeros[i];
numeros = numeros.filter((numero) => numero === primoActual || numero % primoActual !== 0);
}
// El número es primo si está en el arreglo resultante
return numeros.includes(numero);
}
Luego, inicializamos un arreglo
que contiene todos los números desde 2 hasta el número dado. Utilizamos numeros
para crear el arreglo y una función de devolución de llamada para asignar los valores. La función de devolución de llamada crea un número entero para cada elemento del arreglo, comenzando en 2 y aumentando en 1 hasta el número dado.Array.from()
Después, iteramos sobre los números del arreglo y eliminamos sus múltiplos utilizando el método filter()
. Para cada número
, eliminamos todos los elementos del arreglo que sean múltiplos de primoActual
, excepto el propio primoActual
.primoActual
Finalmente, comprobamos si el número dado se encuentra en el arreglo resultante. Si lo hace, es primo; si no, no lo es.
Este método es más eficiente que el método de fuerza bruta para números grandes, ya que elimina rápidamente todos los múltiplos de un número y salta a su siguiente número primo.