题目:
算法思想:普通的做法是遍历所有的数去找因数,这样复杂度太高,我们采用厄拉多塞筛法,思想是假如当前数是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;
}