Ahri-珊
day14将分享LeetCode算法题204。
204. Count Primes
计算比n小的数当中的质数个数。
心路历程
1.新建一个哈希数组用于存放每一个数是否是质数的判断结果(从2开始,1不是质数)
2.如果这个数没有被判断(hash[i]未被初始化),执行判断
3.判断:这个数的倍数(j)都不是质数,将hash[j]的值初始化
4.遍历哈希数组,未被初始化的元素个数即质数个数
5.为什么(ii<n)不是(i<n):判断到i时,ii之内的数没被初始化的已经全是质数了
代码:
var countPrimes = function(n) {
var hash = new Array(n);
var count = 0;
for(let i=2;i*i<n;i++)
{
if(!hash[i])
{
for(let j=i*i;j<n;j+=i)
hash[j]=true;
}
}
for(let i=2;i<n;i++)
{
if(!hash[i])
count++;
}
return count;
};
Comments