复习模板的时候发现个神奇的事情
查看原帖
复习模板的时候发现个神奇的事情
113932
lxg_honoka楼主2020/10/9 02:41
#include<cstdio>
using namespace std;


int prime[1000001], h = 0;
int vis[100000001];

int main ()
{
	int n, q, x;
	scanf("%d%d", &n, &q);

    vis[1] = 1;
	for(int i = 2; i <= n; i++)
	{
		if(!vis[i])
            prime[h++] = i;
		for(int j = 0; j < h && i * prime[j] < n; j++)
		{
			vis[i*prime[j]] = 1;
			if (i % prime[j] == 0)
                break;
		}
	}
	for(int i = 1; i <= q; i++)
	{
		scanf("%d",&x);
		printf("%d\n",prime[x-1]);
	}
	return 0;
}

我先开 prime 数组,然后提交就是 RE

#include<cstdio>
using namespace std;

int vis[100000001];
int prime[1000001], h = 0;

int main ()
{
	int n, q, x;
	scanf("%d%d", &n, &q);

    vis[1] = 1;
	for(int i = 2; i <= n; i++)
	{
		if(!vis[i])
            prime[h++] = i;
		for(int j = 0; j < h && i * prime[j] < n; j++)
		{
			vis[i*prime[j]] = 1;
			if (i % prime[j] == 0)
                break;
		}
	}
	for(int i = 1; i <= q; i++)
	{
		scanf("%d",&x);
		printf("%d\n",prime[x-1]);
	}
	return 0;
}

就很神奇

但是我先开 vis 数组,提交就能 AC

2020/10/9 02:41
加载中...