Sum All Primes
求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
思路:
找出从0到num之间所有的质数,然后遍历累加;
知识点:
质数除2到自己本身(不包含)都不会整除;
失误:
我把拿来确定a是否可以整除的b放到了全局中,这导致a每次循环但b的值不会变化,后来我将b声明到了a的循环中;
代码:
1 function sumPrimes(num) { 2 var arr = [2]; 3 var idx = 0; 4 for (var a = 3; a <= num; a++) { 5 var b = 0; 6 for (var i = 2; i < a; i++) { 7 if (a % i === 0) { 8 b = 1; 9 break; 10 } 11 } 12 if (b === 0) { 13 arr.push(a); 14 } 15 } 16 17 for (var j = 0; j < arr.length; j++) { 18 idx += arr[j]; 19 } 20 return idx; 21 } 22 23 sumPrimes(10);