??Sum All Primes | Free Code Camp

求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
sumPrimes(10) 应该返回一个数字。
sumPrimes(10) 应该返回 17。
sumPrimes(977) 应该返回 73156。

Q1:!sieve[i] ??

Q2:j = i << 1 ??

function sumPrimes(num) {
  var res = 0;

  // Function to get the primes up to max in an array
  function getPrimes(max) {
    var sieve = [];
    var i;
    var j;
    var primes = [];
    for (i = 2; i <= max; ++i) {
      if (!sieve[i]) {   
        // i has not been marked -- it is prime
        primes.push(i);
        for (j = i << 1; j <= max; j += i) {
          sieve[j] = true;
        }
      }
    }

    return primes;
  }

  // Add the primes
  var primes = getPrimes(num);
  for (var p = 0; p < primes.length; p++) {
    res += primes[p];
  }

  return res;
}

// test here
sumPrimes(10);

//正解二:递归
function sumPrimes(num) {
function isPrime(number) {
for(i=2;i<=number;i++) {
if(number % i ===0 && number != i) {
return false;
}
}
return true;
}
if(num===1){ return 0;}
if(isPrime(num)===false) return sumPrimes(num-1);
if(isPrime(num)===true) return num + sumPrimes(num-1);
}

sumPrimes(10);

你可能感兴趣的:(??Sum All Primes | Free Code Camp)