传统的判断素数的方法就是使用当前数字去对小于它的数进行依次整除尝试如下:
bool isprim(int n){
for(int i=2;i*i<=n;i++){
if(n%i==0){
return false;
}
}
return true;
}
上述方法每次只能判断一个数是否为素数,而且计算量较大,这里提出一种素数筛法,可以快速的找出某个范围内的素数数量
素数筛法
用此方法可以快速统计小于等于n的数中素数的个数
int countPrimes(int n) {
vector<int> isprim(n+1,1);
for(int i=2;i*i<=n;i++){
if(isprim[i]){
for(int j=i*i;j<=n;j+=i){
isprim[j]=0;
}
}
}
int count=0;
for(int i=2;i<=n;i++){
count+=isprim[i];
}
return count;
}