为啥p数组要开到6e6以上,不然全wa?
#include <bits/stdc++.h>
#define ll long long
using namespace std;
bool pd[101000000];
int T,p[6000007],n,cnt=0;
void getprime(int x){
memset(pd,true,sizeof(pd));
pd[0]=pd[1]=false;
for (int i=2;i<=x;i++){
if(pd[i]==true)p[++cnt]=i;
for (int j=1;j<=cnt&&p[j]*i<=x;j++){
pd[p[j]*i]=false;
if(i%p[j]==0)break;
}
}
}
int main(){
std::ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>T;
getprime(n);
while(T--){
int a;
cin>>a;
cout<<p[a]<<"\n";
}
return 0;
}
求解释