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`);
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
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
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
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