埃氏筛

P3383 【模板】线性筛素数

LRRabcd @ 2024-07-28 13:30:21

#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


by BGM114514 @ 2024-07-28 13:48:35

@20121028LRR 有亿点慢是不是


by LRRabcd @ 2024-07-28 20:03:21

嗯,最慢的 197\ \text{ms}


by LRRabcd @ 2024-07-29 00:00:34

不对是 1.97\ s


|