为什么筛不了呢
#include<bits/stdc++.h>
bool vis[100000001];
int n,q,k[9000001],cnt,a[900001];
using namespace std;
void shai(int x)
{
memset(vis,1,sizeof(vis));
vis[1]=0;
for(int i=2;i<=n;i++)
{
if( vis[i] ) k[ ++cnt ]=i;
for(int j=1; j<=cnt && i*k[j]<=n;j++)
{
vis[ i * k[j] ]=0;
if( i % k[j] == 0)
break;
}
}
}
int main()
{
int n,q;
scanf("%d%d",&n,&q);
shai(n);
for(int i=1;i<=q;i++)
{
scanf("%d", &a[i]);
}
for(int i=1;i<=q;i++)
{
printf("%d\n", k[a[i]]);
}
return 0;
}