Guía y comprobaciones
Qué entrada acepta este ejemplo
Un primo es un entero mayor que uno con dos divisores positivos: uno y él mismo. La función trabaja con enteros seguros de Number. Rechaza decimales, infinitos y valores que no puede representar exactamente.
function esPrimo(n) {
if (!Number.isSafeInteger(n) || n < 2) return false;
if (n === 2) return true;
if (n % 2 === 0) return false;
for (let divisor = 3; divisor <= n / divisor; divisor += 2) {
if (n % divisor === 0) return false;
}
return true;
}
console.log([0, 1, 2, 9, 17, 25].map(esPrimo).join(','));
// false,false,true,false,true,false
Por qué basta llegar a la raíz
Si un número compuesto se escribe como un producto de dos factores, al menos uno de ellos no supera su raíz cuadrada. Si ambos fueran mayores, su producto superaría el número. La condición divisor <= n / divisor expresa ese límite sin calcular el cuadrado del divisor. Después de descartar los pares, sólo comprobamos divisores impares.
Este razonamiento no significa que los únicos divisores posibles sean primos ya conocidos; el bucle prueba impares y se detiene al encontrar uno que divide exactamente. Para una consulta educativa aislada resulta fácil de seguir.
Una lista de primos es otro problema
Para obtener muchos primos hasta un límite, repetir esta función para cada número puede ser menos apropiado que una criba. No prometas que el navegador manejará cualquier límite: controla el trabajo y evita bloquear la interfaz con rangos enormes.
Si la entrada procede de un campo de texto, conviértela sólo después de validar el formato. Una cadena vacía convertida a cero no representa una consulta real. Para enteros muy grandes, BigInt requiere otra implementación y pruebas; cambiar sólo el tipo de una variable no adapta automáticamente todas las operaciones.
Casos que detectan errores
El 1 comprueba la definición; el 2, el caso par excepcional; el 9 y el 25, que incluyas el divisor de la raíz; el 17, que no rechaces un primo impar. Añade un número negativo y un decimal para verificar el contrato de entrada.
Preguntas frecuentes
¿El uno es primo?
No. No tiene dos divisores positivos distintos.
¿Sirve para números de cualquier tamaño?
No. Esta implementación acepta enteros seguros de Number y no está diseñada para pruebas criptográficas ni rangos enormes.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.