求小于等于给定数值的质数之和。
只有 1 和它本身两个约数的数叫质数。例如,2 是质数,因为它只能被 1 和 2 整除。1 不是质数,因为它只能被自身整除。
给定的数不一定是质数。
注意:
for(var i=2;i<=Math.sqrt(num);i++)这里进行了部分优化,可以减少循环次数:
判断一个数是否是质数,只需要判断是否能被2~√num整除即可。
//判断num是否是质数 function isPrime(num){ //标记是否是质数,初始值是true var flag=true; //质数:只能被1和本身整除 //如果num可以整除2~Math.sqrt(num)中的任意一个数,则num不是质数,改变标记flag,并终止循环 for(var i=2;i<=Math.sqrt(num);i++){ if(num%i===0) { flag=false; break; } } return flag; } function sumPrimes(num) { var sum=0; //循环判断i=2~num是否是质数,如果是,与sum求和 for(var i=2;i<=num;i++){ if(isPrime(i)) sum+=i; } return sum; } sumPrimes(10);