JavaScriptで作業しています。コードが正しい素数の合計を返しているため、これは少し混乱します。それはより大きい数で働いています。バグがあります。977の場合、7315の977の和の代わりに72179の976の素数の和が返されます。今までテストしたすべてが正しく戻ってきました。Eratosthenesの篩を使用した累計の合計はバグを見つけることができません
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 Done with formatting –