Propiedades de los números primos
Este enfoque tiene su desventaja – ya que los motores de los navegadores son (escrito 11/2018) todavía no TC optimizado, probablemente obtendría un error de desbordamiento de pila literal si la prueba de los primos en el orden de decenas de cientos de millones o más (puede variar, depende de un navegador real y la memoria libre).
Esta respuesta se basa en la respuesta de Ihor Sakaylyuk. Pero en lugar de comprobar todos los números, estoy comprobando sólo los números impares. Haciendo esto reduje la complejidad de tiempo de la solución a O(sqrt(n)/2).
Tu solución tiene una declaración de retorno para cada caso, por lo que detiene la ejecución antes de lo debido. No comprueba ningún número más de una vez. Da una respuesta incorrecta para múltiples casos – 15, 35… de hecho para cada número que es impar.
Parece que tu primera sentencia if dentro de la primera sentencia ‘if’ dentro del bucle for. Ya que si num = 9 e i = 2, 9 % i !== 0 pero 9 no es primo ya que en la siguiente iteración donde i = 3, 9 % i === 0.
La primera sentencia if atrapa los casos de borde. El bucle for comprueba desde 2 hasta la raíz cuadrada de n debido a la propiedad matemática de que ningún número tiene sus dos factores mayores que la raíz cuadrada de ese número.
¿Cómo se encuentran n números primos en JavaScript?
length < n; i++) { var flag = 0; for (let k = 2; k <= i; k++) { if (i % k == 0 && i > k) { flag = 1; //si i es divisible por cualquier número pequeño entonces no es un número primo } else if (i % k == 0 && flag != 1) { arr. push(i); } } } return arr; }; console. log(prime(5));
¿Cuál es el 10 001º número primo de JavaScript?
¿Cuál es el 10.001º número primo? La respuesta es: 104743.
¿Cómo puedo imprimir números primos entre dos números en JavaScript?
La bandera de una variable se pone a 0. El segundo bucle for se utiliza para hacer un bucle entre 2 y el número que se almacena en i . Dentro del segundo bucle, el valor de i se divide por cada número desde 2 hasta el valor uno menos que i (i – 1). Al dividir, si el resto de algún número resulta en 0, ese número no es un número primo.
Lista de números primos js
A continuación, crea un bloque else e inicia el bucle for dentro de él. El bucle for se inicializará a partir del número 2 y continuará iterando hasta que sea igual al valor del número:function checkPrime(number) {
Dentro del bucle for, crea otro bloque if que compruebe si el valor del número es divisible por el valor de i y devuelva false si lo es. Esto se debe a que el número no debe ser divisible por ningún otro número excepto por el uno y por sí mismo:function checkPrime(number) {
Esto se debe a que si el bucle for terminó sin devolver false, significa que el valor del número no puede ser dividido por ningún número entre 1 y él mismo. Por eso debe devolver true para que la persona que llama a la función sepa que el número es un número primo.Aquí está el código fuente completo para que lo inspeccione:function checkPrime(number) {
Encontrar números primos a partir de una matriz de númerosAhora que tienes una función checkPrime() que funciona, puedes comprobar si un número es primo o no a partir de una matriz de números como sigue:let arr = [3, 12, 50, 23, 0];
¿Es 1 un número primo?
El código debería:Pero en cambio no devuelve nada.El paso 1 funciona, pero no consigo que el paso 2 funcione para todos los números menores que 100. El paso 1 funciona, pero no puedo hacer que el paso 2 funcione para todos los números menores que 100. ¿Puedes decirme qué es lo que falla en este código? 6 comentarioscompartirinformar99% votadoEste hilo está archivadoNo se pueden publicar nuevos comentarios ni se pueden emitir votosOrdenar por: mejor
3CompartirInformarNivel 2Op – hace 9 años – editado hace 9 añosGracias, este era el principal problema creo. Pude combinar los pasos en una sola función que lista los números primos más pequeños que su entrada.var prime = function (lim) {
Tuve problemas para optimizarla como sugirieron los otros comentarios, y como no voy a usar esto para números muy grandes la salida es básicamente instantánea como es. Gracias de nuevo por tu ayuda1CompartirInformeNivel 1[eliminado] – 9 añossólo tienes que comprobar los números hasta (n / 2) para que sepas.Cualquier número cuyo factor incluya un número distinto de sí mismo no puede ser un número mayor que (n / 2) porque cualquier número > n/2 no podría dividirse uniformemente en el número.For (i=1; i <= (n/2); i++)
Javascript siguiente número primo
> y por último, llamas a la función, sin almacenar (o emitir en mi arreglo) el valor devuelto15th Jun 2017, 1:04 AMvisph+ 4@Ulisses Cruz: Tienes razón (editada mi solución)…. Suelo hacer más pruebas, pero la verdad es que mi conexión a internet se retrasa mucho y leo el resultado demasiado rápido 😛
> no guardas el resultado del método filter() ;P (gracias a @Ulisses Cruz ^^)15th Jun 2017, 1:12 AMvisph+ 3¿Usas funciones de array, y método avanzado como filter(), pero no sabes formatear una cadena? @@
alert(“Los números primos son: ” + prime(miArray));15 Jun 2017, 1:24 AMUlisses Cruz+ 1¡Gracias por la respuesta! Entendiendo la lógica, y tengo un código de trabajo, que tengo que convertir en la función. Aquí está:
En este caso no funcionará correctamente porque el método del filtro no afectará al array, sólo devolverá otro array afectado.15th Jun 2017, 1:05 AMUlisses Cruz 0Este código funciona, ¡gracias a Ulisses Cruz!