算法:对所有素数求和 (learn to code at freeCodeCamp)

题目

算法中级:对所有素数求和

在这道题目中,我们需要写一个函数,它接收一个数字参数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);

Guess you like

Origin blog.csdn.net/weixin_43245095/article/details/115130880