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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta