Necesita una sugerencia / consejo sobre cómo factorizar números muy grandes en JavaScript
Mi tarea es producir una matriz que contenga todos los números primos hasta un número de 12 dígitos.
Traté de emular elTamiz de Eratóstenes haciendo primero una funciónenumerate
que produce una matriz que contiene todos los enteros de 2 anum
:
var enumerate = function(num) {
array = [];
for (var i = 2; i <= num; i++) {
array.push(i);
}
return array;
};
Entonces hice una funciónleaveOnlyPrimes
que recorre y elimina los múltiplos de cada miembro de la matriz hasta 1/2max
de la matriz (esto no termina siendo cada entero porque la matriz se vuelve más pequeña con cada iteración):
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);
}
};
Esto funciona bien con números de hasta aproximadamente 50000, pero más alto que eso y el navegador parece congelarse.
¿Hay alguna versión de este enfoque que se pueda hacer para acomodar números más grandes, o estoy ladrando el árbol equivocado?