萌新求助!为什么会MLE呢
查看原帖
萌新求助!为什么会MLE呢
322896
xixi_bang楼主2020/4/28 17:09
#include<bits/stdc++.h>
using namespace std;
int p[100000001];//素数筛数组
int vis[100000001];

int isprime(int x){
    if(x==1) return 0;//1不是素数
    if(x==2) return 1;
    for(int i=2;i<sqrt(x)+1;i++){
        if(x%i==0) return 0;
    }
    return 1;
}
int n,q;
int ans[1000000];
int cnt=0;
void shai(){
    for(int i=2;i<=n;i++)
    {
        if(vis[i]==0){
            vis[i]=1;
            if(isprime(i)){
                p[i]=1;
                ans[cnt++]=i;
            }
            else{
                p[i]=0;

            }
            for(int j=i;j<=n;j+=i){
                vis[j]=1;
                p[j]=0;
            }
        }
    }
}

int main(){
    std::ios::sync_with_stdio(0);
    memset(vis,0,sizeof(vis));
    memset(p,0,sizeof(p));

    cin>>n>>q;
    int t;
    shai();
    sort(ans,ans+cnt);

    for(int i=1;i<=q;i++){
        cin>>t;
        cout<<ans[t-1]<<endl;
    }
}
2020/4/28 17:09
加载中...