求优化时间复杂度

P3383 【模板】线性筛素数

difficultlong @ 2024-10-02 17:38:23

#include<bits/stdc++.h>
using namespace std;
int s[50000001];
int n,q,h[1000001];
bool flag(int x){
    int j=2;
    bool f=true;
    while(j<=x-1){
        if(!(x%j)){
            f=false;
            break;
        }
        j++;
    }
    if(x==2){
        f=true;
    }
    return f;
}
int main(){
    int j=0;
    scanf("%d%d",&n,&q);
    for(int i=2;i<=n;i++){
        if(flag(i)){
            s[++j]=i;
        }
    }
    for(int i=1;i<=q;i++){
        scanf("%d",&h[i]);
        printf("%d\n",s[h[i]]);
    }
    return 0;
}

我已经优化了时间复杂度了,怎么还超时啊!!!


by QWQ_HY_DFX @ 2024-10-02 17:43:03

@difficultlong 《筛》

你这优化在哪了啊,甚至判断都没优化


by FarmerDrone @ 2024-10-02 17:55:09

@difficultlong 看题解吧,你这差得远呢


by difficultlong @ 2024-10-02 18:46:12

@xuyao35 额,感谢两位大佬的帮助,已关注,至于为什么不看题解,是因为(我懒)


|