厄拉多塞筛法主要用于查找一定范围内的素数的个数,速度比较快
C++

int countPrime(int n ){
int count=0;
vector<bool> signs(n,true);//假设初始都为素数
for (int i=2; i<n;i++){
     if(signs[i]){
         count++;
         for(int j=i+i; j<n;j+=i){
                signs[j]=false;

}}}
return count;
}

进一步优化使用比特表算法,布尔数组每个值占一个字节,4比特
可以使用一个比特来表示

int countPrime(int n ){
int count=0;
vector<bool> signs(n,true);//假设初始都为素数
····························································································································································································································································································+){
     if(signs[i]){
         count++;
         for(int j=i+i; j<n;j+=i){
                signs[j]=false;

}}}
return count;
}