[Intermediate Algorithm] - Sum All Primes
题目
求小于等于给定数值的质数之和。
只有 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);