返回小于N的质数的个数
解题思路:
①设置一个bool型的数组,最开始都初始化为true
②从2到n-1,假设i*i<n,从i*i开始算起,每次加上i,对应的数据赋值为false
③统计2到n-1中存在多少个true
class Solution {
public:
int countPrimes(int n) {
bool *a = new bool[n];
for(int i=2; i<n; i++)
a[i]=true;
for(int i=2; i*i<n; i++)
{
if(!a[i])
continue;
for(int j=i*i; j<n; j+=i)
a[j]=false;
}
int count = 0;
for(int i=2; i<n; i++)
{
if(a[i])
count++;
}
return count;
}
};