#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8+5;
int n,m,x;
bool isprime[maxn];
int prime[maxn];
void Eulen_sieve(int n) {
memset(isprime,true,sizeof(isprime));
prime[0]=0;
for(int i=2; i<=n; i++) {
if(isprime[i])prime[++prime[0]]=i;
for(int j=1; j<=prime[0] && i*prime[j]<=n; j++) {
isprime[i*prime[j]]=false;
if(i%prime[j]==0) break;
}
}
}
int main() {
cin>>n>>m;
Eulen_sieve(n);
for(int i=0; i<m; i++) {
scanf("%d",&x);
printf("%d\n",prime[x]);
}
for(int i=1;i<=n;i++) cout<<prime[i]<<" ";
return 0;
}
欧拉筛求第k小素数
最新推荐文章于 2022-04-27 09:27:26 发布