题目:

算法思想:普通的做法是遍历所有的数去找因数,这样复杂度太高,我们采用厄拉多塞筛法,思想是假如当前数是i,那么范围n内所有i的倍数肯定不是质数,用一个bool数组记录下来。
代码:
int countPrimes(int n) {
int result = 0;
vector<bool> prime(n);
for(int i = 2;i < n;i++)
{
if(prime[i] == false)
result++;
for(int j = 2*i;j < n;j += i)
{
prime[j] = true;
}
}
return result;
}
本文介绍了一种高效的质数计数算法——厄拉多塞筛法。该算法通过标记非质数的倍数来快速找出指定范围内所有质数,避免了传统方法中重复检查因数的问题,大幅提高了效率。
346

被折叠的 条评论
为什么被折叠?



