Precisa de uma dica / conselho sobre como fatorar números muito grandes em JavaScript

Minha tarefa é produzir um array contendo todos os números primos até um número de 12 dígitos.

Eu tentei imitar oPeneira de Eratóstenes primeiro fazendo uma funçãoenumerate que produz um array contendo todos os inteiros de 2 anum:

var enumerate = function(num) {
    array = [];
    for (var i = 2; i <= num; i++) {
        array.push(i);
    }
    return array;
};

Então fiz uma funçãoleaveOnlyPrimes que percorre e remove múltiplos de cada membro da matriz até 1/2max da matriz (isso não acaba sendo todo inteiro porque a matriz fica menor a cada iteração):

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);   
    }
};

Isso funciona bem com números até cerca de 50000, mas qualquer um maior do que isso e o navegador parece congelar.

Existe alguma versão dessa abordagem que poderia ser feita para acomodar números maiores, ou eu estou latindo na árvore errada?

questionAnswers(2)

yourAnswerToTheQuestion