Comprobar número primo en JavaScript

3 minutos de lectura

Avatar de usuario de John Ozenua
Juan Ozenúa

Comprobar número primo en JavaScript

let inputValue= 7;
let isprime=inputValue==1? false:true;  //bcoz 1 is not prime

for(let i=2;i<inputValue;i++){
  inputValue%i==0? isprime*=false :isprime*=true;
};

alert(`${inputValue} is ${isprime? 'prime':'not prime'} number`);

  • Posible duplicado de Prime Numbers JavaScript

    – Nicovank

    23 de octubre de 2016 a las 6:12

  • su bucle for nunca iterará más de una vez.

    – Shashwat Kumar

    23 de octubre de 2016 a las 6:14

  • @ShashwatKumar, explique por qué y cómo solucionar esto

    – Juan Ozenúa

    29/10/2016 a las 21:41

  • Esto es muy ineficiente, no use bucles para algo como esto… Verifique mi respuesta para encontrar la forma más fácil de CPU de encontrar un número primo… aquí

    – 255.tar.xz

    23 de noviembre de 2019 a las 18:25

  • code stream usó su código para promocionar su software… creo que es divertido

    – vik

    10 de junio de 2020 a las 16:38

Avatar de usuario de Geeky
geek

Una pequeña sugerencia aquí, ¿por qué quieres ejecutar el bucle para números n enteros?

Si un número es primo tendrá 2 factores (el 1 y el mismo número). Si no es un número primo, tendrán 1, el número en sí y más, no necesita ejecutar el bucle hasta el número, puede considerar ejecutarlo hasta la raíz cuadrada del número.

Puedes hacerlo por la lógica principal de Euler. Verifique el siguiente fragmento:

function isPrime(num) {
  var sqrtnum=Math.floor(Math.sqrt(num));
    var prime = num != 1;
    for(var i=2; i<sqrtnum+1; i++) { // sqrtnum+1
        if(num % i == 0) {
            prime = false;
            break;
        }
    }
    return prime;
}

Ahora la complejidad es O(sqrt(n))

Para más información ¿Por qué comprobamos hasta la raíz cuadrada de un número primo para determinar si es primo?

Espero eso ayude

  • Agregue una explicación a su código. Ayuda a las personas a comprender el algoritmo, para que puedan adaptarlo en lugar de simplemente copiar su código.

    – Sr. T

    15 de abril de 2018 a las 16:39

  • Falla en 9, ya que sqrt(9) = 3, y no se llama a su ciclo. probar i <= s

    – Zeph Davis

    10 de julio de 2019 a las 18:17


Versión genial:

const isPrime = n => ![...Array(n).keys()].slice(2).map(i => !(n%i)).includes(true) && ![0,1].includes(n)

  • ¿Qué es ` && ![0,1].incluye(número)` para ? Si n = 1 o 0, es el mismo resultado sin esta verificación: falso

    – Jeremy Belolo

    1 de abril de 2019 a las 7:50

  • ¿Podrías elaborar un poco sobre esto?

    – Vendetta

    4 de mayo de 2021 a las 5:00

  • Solución ineficiente en términos de complejidad temporal.

    – Ravi Chaudhary

    1 de octubre a las 15:08

Avatar de usuario de HSW
HSW

Los números primos son de la forma 6f ± 1, excluyendo 2 y 3 donde f es cualquier número entero

 function isPrime(number)
 { 
   if (number <= 1)
   return false;

   // The check for the number 2 and 3
   if (number <= 3)
   return true;

   if (number%2 == 0 || number%3 == 0)
   return false;

   for (var i=5; i*i<=number; i=i+6)
   {
      if (number%i == 0 || number%(i+2) == 0)
      return false;
   }

   return true;
 }

Tiempo Complejidad de la solución: O(sqrt(n))

  • ¿Qué es ` && ![0,1].incluye(número)` para ? Si n = 1 o 0, es el mismo resultado sin esta verificación: falso

    – Jeremy Belolo

    1 de abril de 2019 a las 7:50

  • ¿Podrías elaborar un poco sobre esto?

    – Vendetta

    4 de mayo de 2021 a las 5:00

  • Solución ineficiente en términos de complejidad temporal.

    – Ravi Chaudhary

    1 de octubre a las 15:08

Avatar de usuario de Marvel Moe
maravilla moe

function isPrimeNumber(n) {
  for (var i = 2; i < n; i++) { // i will always be less than the parameter so the condition below will never allow parameter to be divisible by itself ex. (7 % 7 = 0) which would return true
    if(n % i === 0) return false; // when parameter is divisible by i, it's not a prime number so return false
  }
  return n > 1; // otherwise it's a prime number so return true (it also must be greater than 1, reason for the n > 1 instead of true)
}

console.log(isPrimeNumber(1));  // returns false
console.log(isPrimeNumber(2));  // returns true
console.log(isPrimeNumber(9));  // returns false
console.log(isPrimeNumber(11)); // returns true

  • sería genial si pones un enlace

    –Ezequiel De Simone

    27 de octubre de 2017 a las 1:28

¿Ha sido útil esta solución?