Potrzebujesz podpowiedzi / porad, jak obliczyć bardzo duże liczby w JavaScript
Moim zadaniem jest stworzenie tablicy zawierającej wszystkie liczby pierwsze do 12-cyfrowej liczby.
Próbowałem naśladowaćSito Eratostenesa najpierw tworząc funkcjęenumerate
który tworzy tablicę zawierającą każdą liczbę całkowitą od 2 donum
:
var enumerate = function(num) {
array = [];
for (var i = 2; i <= num; i++) {
array.push(i);
}
return array;
};
Potem stworzyłem funkcjęleaveOnlyPrimes
który przeplata i usuwa wielokrotności każdego członka tablicy do 1/2max
z tablicy (to nie jest każda liczba całkowita, ponieważ tablica staje się mniejsza z każdą iteracją):
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);
}
};
Działa to dobrze z liczbami do około 50000, ale wyższymi, a przeglądarka wydaje się zamrozić.
Czy istnieje taka wersja tego podejścia, która mogłaby pomieścić większe liczby, czy też szczeka złe drzewo?