Benötigen Sie einen Hinweis / Rat, wie Sie sehr große Zahlen in JavaScript berücksichtigen können
Meine Aufgabe ist es, ein Array zu erzeugen, das alle Primzahlen bis zu einer 12-stelligen Zahl enthält.
Ich habe versucht, die zu emulierenSieb von Eratosthenes indem Sie zuerst eine Funktion ausführenenumerate
das erzeugt ein Array mit jeder ganzen Zahl von 2 bisnum
:
var enumerate = function(num) {
array = [];
for (var i = 2; i <= num; i++) {
array.push(i);
}
return array;
};
Dann habe ich eine Funktion gemachtleaveOnlyPrimes
Dies durchläuft und entfernt ein Vielfaches von jedem Arraymitglied bis zu 1/2max
aus dem Array (dies ist nicht jede ganze Zahl, da das Array mit jeder Iteration kleiner wird):
var leaveOnlyPrimes = function(max,array) {
for (var i = 0; array[i] <= max/2; i++) {
(function(mult,array) {
for (var i = mult*2; i <= array[array.length-1]; i += mult) {
var index = array.indexOf(i);
if (index !== -1) {
array.splice(index,1);
}
}
})(array[i],array);
}
};
Dies funktioniert gut mit Zahlen bis zu etwa 50000, aber höher als das und der Browser scheint einzufrieren.
Gibt es eine Version dieses Ansatzes, die gemacht werden könnte, um größere Zahlen aufzunehmen, oder belle ich den falschen Baum an?