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 .

Anónimo
Anónimo preguntado en Computadoras e internetDiseño y Programación · hace 2 meses

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

Attachment image

1 respuesta

Calificación
  • hace 2 meses
    Respuesta 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.

¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.