不确定这里有什么问题,但我试图在数组中添加一组数字(不是整个数组),但看起来它总结了整个数组:
function sumPrimes(num) {
var arr = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
var total = 0;
var index;
//loop through the whole array
for (var i = 0; i < arr.length; i++) {
//find matching prime number
if (num < arr[i]) {
// get index of prime number in the array
index = arr.indexOf(arr[i]);
//sum up total of prime numbers up to 'num'
for (var b = 0; b < index; b++) {
total = total + arr[index];
}
}
}
return total;
}
sumPrimes(10);
答案 0 :(得分:2)
如果你的目标是计算所有素数之和小于给定数,那么解决方案就容易多了。
无论
function sumPrimes(num) {
var arr = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
var total = 0;
for (var x of arr) {
if (x < num)
total += x;
else
break;
}
return total;
}
在 arr 排序或
时有效function sumPrimes(num) {
var arr = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
var total = 0;
arr.forEach(function(x) {
if (x < num)
total += x;
}, this);
return total;
}
也适用于未排序的数组。
答案 1 :(得分:-1)
您需要将索引替换为b:
//sum up total of prime numbers up to 'num'
for(var b=0; b<index; b++){
total = total + arr[b];
}
编辑:并摆脱外循环