Zu finden sind die ersten 100 Primzahlen
Ich versuche zu finden, die ERSTEN 100 Primzahlen. Nicht die Primzahlen von 1-100. Ich brauche etwas Hilfe mit diesem code.
var p = function(n){
var x = Math.sqrt(n);
if(n==2){return 2;}
else if (n % 2===0){return 0;}
var i=3;
for(i=3; i < x; i+=2){
if(n%i===0){return 0;}
}
return n;
};
var firstKPrime = function(k){
var i=1;
var arr =[];
for(i = 1; i < k+1; i++){
if(i==2){arr.push(p(i));}
if(i>2 && i%2!==0){
if (p(i)>1){arr.push(p(i));}}
}
return arr;
};
var fmt = function(arr){
return arr.join(",");
};
var k = 100;
console.log("firstKPrime(" + k + ")");
console.log(fmt(firstKPrime(k)));
Ich nicht wollen, es zu finden, die Primzahlen von 1-100 mir helfen mit der änderung dieser
- führen Sie eine Schleife. Inkrement
i
, wenn es eine Primzahl ist, fügen Sie es in ein array, überprüfen Sie die.length
des Arrays. Wenn.length = 100
stoppen der Schleife. - Genau das, was helfen, brauchen Sie? stackoverflow.com/help/how-to-ask
- Tun Sie Ihre Hausaufgaben auf die Letzte minute? ;-p
- ha, ha, ha, diese Fragen kommen von Startup-Engineering-Kurs... Jeder scheint zu sein, läuft zum Abschluss der Hausaufgaben 😀
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hehe...
Im ernst, obwohl, sollten Sie das folgende Muster:
primes
und eine ganze Zahli=1
primes.length < 100
, tun Sie den folgenden:i
j
zwischen2
undsqrt(i)
:i % j == 0
dann weiter die Obere Schleifei
aufprimes
Beispiel die Umsetzung der oben:
Dies ist so optimal wie ich mir denken kann, insbesondere, wenn Sie anrufen
getNprimes(100)
mehrmals, wird er nur berechnen, es das erste mal und nur wieder das gleiche Ergebnis beim nächsten mal.j
zwischen 2 undsqrt(i)
. Testen Sie einfach mit all dem bisher gefunden Primzahlen (das ist das Sieb des Eratosthenes).Wenn es Ihnen nichts ausmacht mit einer Bibliothek wie Lazy.js dann könntest du einfach so machen:
Das ist alles. Wenn Sie nicht möchten, zu verwenden Lazy.js dann könnte man versuchen Sie stattdessen:
Siehe demo: http://jsfiddle.net/a3mKv/
Anstatt for(i = 1; i < k+1; i++)
Verwenden
Ich würde das arr.length-Eigenschaft, um zu sehen, wie viele Primzahlen gefunden wurden, und vergleichen Sie, dass die parameter k.
Etwas entlang diesen Linien: