求助解惑
查看原帖
求助解惑
592681
ran_Diana楼主2022/1/25 15:28

为什么筛不了呢

#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;
}
2022/1/25 15:28
加载中...