[JS] ¿Programa para calcular números primos?

Iniciado por Linton, 16 Julio 2013, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Linton

Llevo toda la tarde intentando hacer un programa que halle los números primos entre dos números dados, y nada  :-[ :-[

Por fin me he decidido a buscar en internet y he encontrado varias soluciones, por ejemplo: http://somos-linux.blogspot.com.es/2011/10/algoritmo-de-numero-primo-en-javascript.html
Desde luego parece que el problema es algo complicadete, ¿no? Eso me alivia en parte :)

¿Hay otra solución más recomendable? Gracias, un saludo.




MOD: Especifica el lenguaje al formular un post, no todos somos adivinos.

Almapa

#1
Mira a ver si este te sirve

Código (javascript) [Seleccionar]
function llenarMatriz(){
   var primo;
   var totalPrimos=0;
   var arrayPrimos = new Array();
   var number1 = prompt ('Introduzca el primer numero='); // Se piden ambos límites
   var number2 = prompt ('Introduzca el segundo numero=');
         
   for(var i=Math.min(number1,number2);i<=(Math.max(number1,number2));i++){
       primo=1;
           
       if(i==0 || i==1) // Comprueba si es 0 o 1 para evitar errores al generalizar con los otros números
       {
           arrayPrimos[totalPrimos]=i;
           totalPrimos++;
       }else{  
           
           
       for(var j=2;j<i;j++){ // Se comprueba que el residuo sea diferente de 0 para decidir si es o no primo
           if(i%j==0 ){
               primo=0;
               break;
           }
       }
           if(primo==1)
           {
               arrayPrimos[totalPrimos]=i;
               totalPrimos++;
           }
       }
             
   }  
   alert(arrayPrimos);
}


Supongo que se podría optimizar, pero así de primeras este funciona.
Un saludo

Linton


Linton

Esta parte no la entiendo:

Código (javascript) [Seleccionar]
if(i==0 || i==1) // Comprueba si es 0 o 1 para evitar errores al generalizar con los otros numeros       

¿Qué más da que empiece el intervalo por 0 ó 1? ¿Dónde estaría el posible error, si no se comprueba?

Muchas gracias, un saludo.

Almapa

Creo que me equivoqué suponiendo que el 0 es un número primo, pues al dividirse por sí mismo da como resultado una indeterminación. Por lo tanto tienes razón en que en ese caso daría igual cargarse dicho condicional, pues al empezar en 1, ninguna división daría indeterminación.

El error que veía venir es que el array empezara a dividir por 0 y sacar el residuo con lo que daría seguramente error. Que se comprobara si "i==1" era tan solo por saltarme un cálculo, nada más XD (Sí, es relativamente inútil.)

Un saludo!


Linton

¡Muchas gracias por la aclaración, un saludo!  :)