#include<cstdio>
#include<cmath>
int prime[1000000];
bool isPrime(int num){
if(num==2||num==3){
return true;
}
if(num%6!=1&&num%6!=5){return false;}
int tmp=sqrt(num);
for(int i=5;i<=tmp;i+=6){
if(num%i==0||num%(i+2)==0){
return false;
}
}
return true;
}
int main(){
int t,n;
scanf("%d",&t);
prime[0]=prime[1]=0;
prime[2]=1;
for(int i=3;i<=1000000;i++){
if(isPrime(i)){
prime[i]=prime[i-1]+1;
}else{
prime[i]=prime[i-1];
}
}
while(t--){
n=0;
scanf("%d",&n);
printf("%d\n",prime[n]);
}
return 0;
}
牛客题解-质数数量
最新推荐文章于 2025-05-16 13:26:14 发布