学习线性筛素数模板
#include <bits/stdc++.h>
using namespace std;
int n, q, check[100000010], cnt = 0;
int prime[1000010];//用0表示素数
int main()
{
scanf("%d %d",&n,&q);
check[1] = 1;
for(int i = 2;i <= n; i++)
{
if(!check[i])
prime[++cnt] = i;
for(int j = 1; j <= cnt && i * prime[j] <= n; j++)
{
check[prime[j]*i] = 1;
if(i % prime[j]==0)
break;
}
}
for(int i = 1; i <= q; i++)
{
int k;
scanf("%d", &k);
printf("%d\n", prime[k]);
}
return 0;
}