1
我在JavaScript中工作,这有点令人困惑,因为代码正在返回正确的素数总和。它正在处理更多的数字。有一个错误,对于977,它返回976的素数总和,即72179,而不是977的总和,即73156.到目前为止,我测试过的所有东西都已正确返回。使用Eratosthenes筛选的素数总和找不到bug
function sumPrimes(num) {
var sum = 0;
var count = 0;
var array = [];
var upperLimit = Math.sqrt(num);
var output = [];
for (var i = 0; i < num; i++) {
array.push(true);
}
for (var j = 2; j <= upperLimit; j++) {
if (array[j]) {
for (var h = j * j; h < num; h += j) {
array[h] = false;
}
}
}
for (var k = 2; k < num; k++) {
if (array[k]) {
output.push(k);
}
}
for (var a = 0; a < output.length; a++) {
sum += output[a];
count++;
}
return sum;
}
sumPrimes(977);
格式化您的问题时请不要懒惰 – Amit
@Amit格式化完成 –