本地能编译:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e8 + 9;
bool is_not_prime[N] = {1,1};
int prime[N],top,n,q,k;
void make_prime(){
for(int i = 2;i <= n;i++){
if(!is_not_prime[i])
prime[++top] = i;
for(int j = 1;j <= top && i * prime[j] <= n;j++){
is_not_prime[i * prime[j]] = 1;
if(i % prime[j] == 0)
break;
}
}
}
int main(){
scanf("%d%d", &n, &q);
make_prime();
for(int i = 1;i <= q;i++){
scanf("%d", &k);
printf("%d\n", prime[k]);
}
return 0;
}
https://www.luogu.com.cn/record/113845513