求小于等于给定数值的质数之和。
只有 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);