全RE求助
查看原帖
全RE求助
228770
ZBAA_MKC楼主2021/3/9 19:56
#include <bits/stdc++.h>
using namespace std;

const int maxn = 5760000;
int prime[maxn], v[100000000], a[1000005];

void lprime(int n)
{
	memset(v, 0, sizeof(v));
	int cnt = 0;
	for (int i = 2; i <= n; i++)
	{
		if (v[i] == 0)
		{
			v[i] = i;
			prime[++cnt] = i;
		}
		for (int j = 1; j <= cnt; j++)
		{
			if (prime[j] > v[i] || prime[j] > n / i)
			{
				break;
			}
			v[i * prime[j]] = prime[j];
		}
	}
	return;
}
int main()
{
    int n, q;
    scanf("%d%d", &n, &q);
    for (int i = 0; i < q; i++)
    {
    	scanf("%d", &a[i]);
	}
	lprime(n);
	for (int i = 0; i < q; i++)
	{
		printf("%d\n", prime[a[i]]);
	}
	return 0;
}
2021/3/9 19:56
加载中...