摘自本人以前博客:
class Solution {
public:
int countPrimes(int n) {
//返回小于非负整数n 的质数的个数
int count=0;
if (n<=2) return 0;
bool *s=new bool[n]; //new的写法,注意new的类型
memset(s,true,n*sizeof(bool));
//一个数是质数,可以通过条件:p%(sqrt(p)+1)!=0来判断。在排除掉小于等于质数p的所有元素的整数倍之后,剩余在p到p^2之间的数据都是质数
for(int i=2;i*i<n;i++)
{
if(s[i])
{
for(int j=2;i*j<n;j++)
{
s[i*j]=false;
}
}
}
for (int i=2;i<n;i++)
{
if (s[i]==true)
count++;
}
delete []s;
return count;
}
};