【发布时间】:2020-03-02 14:39:52
【问题描述】:
我已经创建了一个 repl。如果你可以直接点击运行并查看素数查找器的筛子和非筛子实现之间的区别...
我已经对这个简单的筛子进行了我所知道的所有优化,并期望获得更高的性能提升。
我可以对筛子进行进一步优化以使其运行得更快吗?
代码如下:
/*
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);
}
}
}
【问题讨论】:
-
你们都想要什么细节?
-
我投票结束这个问题,因为它属于codereview.stackexchange.com。
标签: javascript optimization primes