Description:
Count the number of prime numbers less than a non-negative number, n.
有三点优化
- 偶数排除掉
- 只除已经判别出来的素数(数组的读写操作可能也会拖慢速度吧)
- 只除小于目标数平方根的数
此题决计还有很多优化空间。(待续)
/**
* @param {number} n
* @return {number}
*/
var countPrimes = function(n) {
var r = [];
var f = true;
for(var i = 3;i<n;i+=2){
f = true;
for(var j=0,l=r.length;r[j]*r[j]<n&&j<l;j++){
if(i%r[j] === 0){
f = false;
break;
}
}
if(f){
r.push(i);
}
}
if(r.length>0){
return r.length +1;
}
else if(n==3){
return 1;
}
else{
return 0;
}
};