Web 前端开发 让前端飞

【Javascript】计算数列中小于等于num的所有质数之和

2017-11-30  本文已影响0人  雨水之后
function sumPrimes(num) {

  var sum = 0;
  var arr = [];  //储存初始数列
  var primes = [];  //储存质数数列

  //生成初始数列
  for(var i=1;i<=num;i++){
    arr.splice(i,0,i);
  }

  //判断是否质数
  function isPrime(n) {
    if (n <= 3) { return n > 1; }
    if (n % 2 === 0 || n % 3 === 0) { return false; }
    for (var  i = 5; i * i <= n; i += 6) {
        if (n % i === 0 || n % (i + 2) === 0) { return false; }
    }
    return true;
  }

  //生成质数数列
  for(var j=0;j<arr.length;j++){
    if(isPrime(arr[j])){
      primes.splice(arr[j],0,arr[j]);
    }
  }

  //求和
  sum = primes.reduce((a,b)=>a+b);

  return sum;
}

验算:

sumPrimes(13); //result: 41

THE END.

上一篇下一篇

猜你喜欢

热点阅读