Yahoo Respuestas cerrará el 4 de mayo de 2021 (hora del Este de EE. UU.) y, a partir del 20 de abril de 2021 (hora del Este de EE. UU.), el sitio web de Yahoo Respuestas estará disponible solo en modo de lectura. No habrá cambios a otras propiedades o servicios de Yahoo, ni a tu cuenta de Yahoo. Puedes encontrar más información sobre el cierre de Yahoo Respuestas y cómo descargar tus datos en esta página de ayuda .
¿Por qué no puedo sumar los números primos hasta los 2 millones?
Estoy resolviendo los problemas del proyecto de euler en javascript, en el numero 10 me manda a sumar todos los numeros primos por debajo de 2 millones. Ya lo resolví, pero no me corre :(
Alguien q me ayude a entender que esta mal en el programa.
var suma=0;
for (var i = 2; i <= 2000000; i++){
var primo = 1;
var contador = 2;
while(contador<i) {
if (i % contador == 0) {
primo = 0;
}
contador++;
}
if(primo==1) {
suma=suma+i;
}
}
console.log(suma);

1 respuesta
- RobertoLv 7hace 2 mesesRespuesta preferida
Funciona, pero es terriblemente ineficiente. El navegador se aburre de hacer lo mismo a cada rato y te pregunta si quieres continuar.
Para hacerlo un poco más eficiente puedes eliminar los pares (por ejemplo, empieza a contar i a partir de 3 y en vez de i++ haz i=i+2, en vez de contador = 2, haz contador = 3 y contador = contador + 2)
Tampoco es necesario incrementar contador hasta i. Si contador es igual a la mitad de i y el número sigue sin ser divisible, entonces es primo. De hecho, solo tienes que tratar de dividir hasta sqrt(i) para determinar si i es primo. Hay otros trucos, pero va a seguir siendo algo intensivo.