题目
算法中级:对所有素数求和
在这道题目中,我们需要写一个函数,它接收一个数字参数num,返回值为不大于这个数字的所有质数之和。
质数是大于 1 且仅可以被 1 和自己整除的数。比如,2 就是一个质数,因为它只可以被 1 和 2(它本身)整除。
注意,传入函数的num不一定是质数。
sumPrimes(10)应该返回一个数字。
sumPrimes(10)应该返回 17。
sumPrimes(977)应该返回 73156。
解题
function sumPrimes(num) {
let arr = [];
for (let i = 2; i <= num; i++) {
arr.push(i);
}
if (num < 2) {
return 0;
}
arr = arr.filter((value) => {
let res = true;
for (let i = 1; i < value; i++) {
if (value % i == 0 &&i!=1) {
res = false;
break;
}
}
return res;
})
return arr.reduce((total,item)=>{
return total +=item;
});
}
sumPrimes(977);