题解
2025-04-15 20:24:52
发布于:浙江
16阅读
0回复
0点赞
思路:首先用埃氏筛筛一遍(会的可以用线性筛),之后的复杂度进行预处理,否则会TLE。最后直接查询即可、
#include <bits/stdc++.h>
using namespace std;
int main(){
long long a,b,sz[10000005]={0};
sz[1]=1;
cin >> a >> b;
//埃氏筛代码
for(int i=2;i*i<=a;i++){
if(sz[i]==0){
for(int j=2*i;j<=a;j+=i){
sz[j]=1;
}
}
}int m[10000005]={};
int num=1;
//预处理
for(int i=1;i<=a;i++){
if(sz[i]==0){
m[num]=i;
num++;
}
}
//查询
for(int k=1;k<=b;k++){
int n;
cin >> n;
cout <<m[n]<<endl;
}
return 0;
}
时间复杂度,空间复杂度
最后感谢大佬@队团加不)童帅_者仇复
这里空空如也
有帮助,赞一个