Нужна подсказка / совет относительно того, как учитывать очень большие числа в JavaScript
Моя задача - создать массив, содержащий все простые числа, вплоть до 12-значного числа.
Я пытался подражатьСито Эратосфена сначала сделав функциюenumerate
который производит массив, содержащий каждое целое число от 2 доnum
:
var enumerate = function(num) {
array = [];
for (var i = 2; i <= num; i++) {
array.push(i);
}
return array;
};
Тогда я сделал функциюleaveOnlyPrimes
который проходит и удаляет кратные числа каждого элемента массива до 1/2max
из массива (это не заканчивается каждым целым числом, потому что массив становится меньше с каждой итерацией):
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);
}
};
Это прекрасно работает с числами до 50000, но чуть выше, и браузер, кажется, зависает.
Есть ли какая-то версия этого подхода, которую можно было бы сделать, чтобы приспособить большие числа, или я лаю не на том дереве?