【发布时间】:2019-02-25 09:48:52
【问题描述】:
// 以下代码在我的编辑器中生成准确的答案,但我想优化代码以通过 freecodecamp 环境中的测试。任何人都可以阐明这个问题吗?
function isPrime(param) {
if (param == 2) {
return true;
}
if (param % 2 == 0) {
return false;
}
var max = Math.ceil(Math.sqrt(param));
for (var i = 3; i <= max; i += 2) {
if (param % i == 0) {
return false;
}
}
return true;
}
function primeSummation(n) {
var primeArr = [];
for (var i = 2; i < n; i++) {
if (isPrime(i)) {
primeArr.push(i);
}
}
var sumArray = primeArr.reduce(function add(a, b) {
return a + b;
}, 0);
console.log(sumArray)
return sumArray;
}
primeSummation(2000000);
【问题讨论】:
-
你可以检查这个link来确定数字是否是素数&也正常
for会比reduce更好 -
欢迎来到 StackOverflow。很高兴你加入了训练营。有很多东西要学,我一直祈祷。如果您正在寻找计算素数的最佳算法,此问题已在 StackOverflow 上得到解答:stackoverflow.com/questions/1801391/…
-
我会将 primeArr 提供给 isPrime 函数,此时您可以针对每个奇数检查素数
标签: javascript optimization primes