Я создал repl.it, где вы можете просто нажать Run и увидеть разницу между ситовой и неситовой реализацией простого искателя ...
repl.it
Я произвел все известные мне оптимизации для этого простого сита и ожидал увеличения производительности.
Могу ли я провести дополнительные оптимизации, чтобы ускорить работу сита ?
Вот код:
/*
PRIME 2
*/
function prime2(n){
const primes = [2];
not_prime: for(let i = 3; i < n; i += 2){
for(let j = 2; j * j <= i; j++){
if(i % j === 0){
continue not_prime;
}
}
primes.push(i);
}
return primes;
}
/*
PRIME 3 - SIEVE
*/
function prime3 (n) {
const primes = [];
const sieve = (new Array(n)).fill(true);
for (let i = 2; i * i <= n; i += 1) {
if (sieve[i]) {
for (let j = i * i; j <= n; j = j + (i * 2)) {
sieve[j] = false;
}
}
}
makePrimes(sieve, primes, n);
return primes;
};
function makePrimes(sieve, primes, n){
for (let i = 2; i < n; i++) {
if(sieve[i]) {
primes.push(i);
}
}
}