题目
求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
提示
测试用例
sumPrimes(10)
应该返回一个数字。sumPrimes(10)
应该返回17
。sumPrimes(977)
应该返回73156
。
分析思路
- 由于偶数均能被2整除,所以为了减少循环,判断质数时只判断奇数,并且从3开始
for (var i = 3; i <= num; i += 2)
- 质数的判断只需通过对
2~其平方根
取余,如果有为 0 的就不是质数
代码
1.function sumPrimes(num) {2. var sum = 2;3.4. for (var i = 3; i <= num; i += 2) {5. var isPrime = true;6.7. for (var j = 2; j <= Math.sqrt(i); j++) {8. if ((i % j) === 0) {9. isPrime = false;10. }11. }12. if (isPrime) 13. sum += i;14. }15.16. return sum;17.}18.19.sumPrimes(10);