我的代码:
#include <iostream>
using namespace std;
bool vis[100000000];
int prime[50000000];
void init(int maxn)
{
int cnt = 0;
for (int i = 2; i < maxn; ++i)
{
if (vis[i] == false)
{
prime[cnt] = i;
cnt += 1;
}
for (int j = 1; j <= cnt && i * prime[j] < maxn; ++j)
{
vis[prime[j] * i] = 1;
if (i % prime[j] == 0)
{
break;
}
}
}
}
int main()
{
std::ios::sync_with_stdio(0);
int n, q;
cin >> n >> q;
init(n);
int a;
cout << prime[1] << " " << prime[2] << " " << prime[3];
for (int i = 0; i < q; ++i)
{
cin >> a;
cout << prime[a] << endl;
}
return 0;
}
似乎不是因为数组开大了