欧拉线性筛

image

image

模板

#include<bits/stdc++.h>
using namespace std;
const int N=1e8+10;
int p[N];
bitset<N>vis;
int n;
void ola(){
	int cnt=0;
	for(int i=2;i<=N;i++){
		if(!vis[i])p[++cnt]=i;
		for(int j=1;j<=cnt;j++){
			if(i*p[j]>N)break;
			vis[i*p[j]]=1;
			if(i%p[j]==0)break;
		}
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	ola();
	cin>>n;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		cout<<p[x]<<"\n";
	}
	return 0;
} 
posted @ 2023-12-18 21:55  yufan1102  阅读(9)  评论(0编辑  收藏  举报