1 javascript performance loops for-loop
我试图解决项目euler 10问题(找到所有素数的总和低于200万),但代码需要永远完成,我如何让它更快?
console.log("Starting...")
var primes = [1000];
var x = 0;
var n = 0;
var i = 2;
var b = 0;
var sum = 0;
for (i; i < 2000000; i++) {
x = 0;
if (i === 2) {
primes[b] = i
sum += primes[b];
console.log(primes[b]);
b++;
}
for (n = i - 1; n > 1; n--) {
if (i % n === 0) {
x++;
}
if (n === 2 && x === 0) {
primes[b] = i;
sum += primes[b];
console.log(primes[b]);
b++;
}
}
}
console.log(sum)
Run Code Online (Sandbox Code Playgroud)
你可以做的最简单的超级简单事情:
找到除数后,打破内循环!
当你检查素性时,先从小除数开始,而不是从大除数开始.你会发现复合材料更快.
你只需要检查除数<= Math.sqrt(n)
你只需要检查素数除数.你有一个列表.
循环外的进程2,然后只在循环内执行奇数: for(i=3;i<2000000;i+=2)