全TLE

P3383 【模板】线性筛素数

sjy01 @ 2024-08-20 08:19:22

代码如下:

#include<bits/stdc++.h>
using namespace std;
int k[10000001],a[10000001];
int main(){
    int n,q,max=0,sum=22;
    cin>>n>>q;
    for(int i=1;i<=q;i++){
        cin>>k[i];
        max=max>k[i]?max:k[i];
    }
    a[1]=2;
    a[2]=3;
    a[3]=5;
    a[4]=7;
    a[5]=11;
    a[6]=13;
    a[7]=17;
    a[8]=19;
    for(int i=9;i<=max;i++){
        while(true){
            sum++;
            bool f=true;
            for(int j=1;j<i&&a[j]<=sqrt(sum);j++){
                if(sum%a[j]==0){
                    f=false;
                    break;
                }
            }
            if(f){
                a[i]=sum;
                break;
            }
        }
    }
    for(int i=1;i<=q;i++){
        printf("%d\n",a[k[i]]);
    }
    return 0;
}

代码有点乱,请各位大佬纠正错误(其实本人也不知道什么是TLE)。


by 违规用户名Jx9)zIu @ 2024-08-20 08:29:09

三重循环,你不TLE谁TLE

@sjy01


by Texas_the_Omertosa @ 2024-08-20 08:32:33

xxs 就去学学 xxs


by sjy01 @ 2024-08-20 08:33:10

@违规用户名Jx9)zIu,谢谢,不过我不知道怎么改。


|