全re求助

P3383 【模板】线性筛素数

_wzb_ @ 2024-04-29 13:33:06

#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10,M=1e8+10;
long long  n,m,a[N],p[N],cnt,sum;
bool is[N];
void zs(int x){
    memset(is,true,sizeof(is));
    is[1]=false;
    for(int i=2;i<=x;i++){
        if(is[i]) p[++cnt]=i;//sum++;
        for(int j=1;j<=cnt&&i*p[j]<=x;j++){
            is[i*p[j]]=false;
            if(i%p[j]==0) break;
        }
    }
}
int main(){
    int x;
    std::ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
    cin>>n>>m;zs(n);
    sort(p+1,p+cnt);
    for(int i=1;i<=m;i++) cin>>x,cout<<p[x]<<'\n';

    //cin>> 
    //cout<<sum;

    return 0;
}

by OneSheeep @ 2024-04-29 13:40:07

@wzb

对于 100\% 的数据,n = 10^8

你只开到了 10^7


|