gpt4 book ai didi

javascript - 有什么方法可以提高 JS 中这个 for 循环的性能吗?

转载 作者:行者123 更新时间:2023-11-30 08:33:59 25 4
gpt4 key购买 nike

我正在尝试解决欧拉 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)

最佳答案

你可以做的最大的 super 简单的事情来让它更快:

  • 找到除数就跳出内循环!

  • 检查素数时,从小除数开始,而不是从大除数开始。你会发现复合 Material 要快得多。

  • 您只需检查除数 <= Math.sqrt(n)

  • 您只需检查质因数。你有他们的 list 。

  • 循环外处理2,然后循环内只做奇数:for(i=3;i<2000000;i+=2)

关于javascript - 有什么方法可以提高 JS 中这个 for 循环的性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33844357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com