埃氏筛
查看原帖
埃氏筛
1003179
LRRabcd楼主2024/7/28 13:30
#include<iostream>
using namespace std;
bool vis[100000005];
int pre[1000005];
int main(){
	int n,q;
	cin>>n>>q;
	vis[1]=1;
	for(int i=2;i*i<=n;i++){
		if(vis[i]==0){
			for(int j=i*i;j<=n;j+=i){
				vis[j]=1;
			}
		}
	}
	int cnt=0;
	for(int i=2;i<=n;i++){
		if(vis[i]==0){
			pre[++cnt]=i;
		}
	}
	while(q--){
		int x;
		cin>>x;
		cout<<pre[x]<<endl;
	}
	return 0;
}

埃氏筛+不开long long+不关闭同步流,也可以过。

AC

2024/7/28 13:30
加载中...