模板:
//埃氏筛求质数的个数
int countOfPrime(int n){
//1:质数 0:非质数
vector<int> isPrime(n+1,1);
int count=0;
//筛子筛到n的开根即可
int sq=sqrt(n)+1;
for(int i=2; i<sq; i++){
if(isPrime[i]){
//⭐在这里即可统计sq前的质数个数
count++;
for(int j=i*i; j<n+1;j+=i){
isPrime[j]=0;
}
}
}
//统计sq之后质数个数
for(int i=sq;i<n+1;i++){
if(isPrime[i]) count++;
}
return count;
}
int countPrimes(int n) {
//1:质数 0:非质数
vector<int> isPrime(n,1);
int ans=0;
int sq=sqrt(n);
for(int i=2;i<=sq;i++){
if(isPrime[i]){
for(int j=i*i;j<n;j+=i){
isPrime[j]=0;
}
}
}
for(int i=2;i<n;i++){
if(isPrime[i]) ans++;
}
return ans;
}