暴力很不幸的tle了,但是这个前缀和做法挺巧妙的:
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int N=1000005;
int a[N];
int main(){
int t;
cin>>t;
int i,j;
int count=0;
for(i=2;i<=N;i++){
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
break;
}
}
if(j>sqrt(i)){
count++;
}
a[i]=count;
}
int n;
for(i=0;i<t;i++){
cin>>n;
cout<<a[n]<<endl;
}
return 0;
}
大家感兴趣我以后有时间可以发一下题解