代码如下所示
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long n, k, q, a[100000010], vis[100000010], t;
inline long long read()
{
long long x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9')
{
if (ch == '-')
f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
{
x = (x << 1) + (x << 3) + ch - '0';
ch = getchar();
}
return x * f;
}
int main()
{
n=read(),q=read();
vis[0] = vis[1] = 1;
for (int i = 2; i <= n; i++)
{
if (!vis[i])
a[++t] = i;
for (int j = 1; j <= t && a[j] * i <= n; j++)
{
vis[a[j] * i] = 1;
if (i % a[j] == 0)
break;
}
}
for (int i = 1; i <= q; i++)
{
k=read();
cout << a[k] << endl;
}
return 0;
}
```cpp