jam1270 @ 2024-04-20 22:54:14
全部都MLE了
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
bool Isprime(int);
vector<int> eluer_sieve(int m){
vector<int> result;
vector<bool> status(m+1,true);
for(int i=2;i<=sqrt(m);i++){
if(Isprime(i)){
result.push_back(i);
for(int j=0;j<result.size()&&result[j]*i>m;j++)
{
if(i%result[j]==0)
break;
status[result[j]*i]=false;
}
}
}
for(int l=sqrt(m)+1;l<=m;l++){
if(status[l]==true)
result.push_back(l);
}
return result;
}
bool Isprime(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)
return false;
}
return true;
}
vector<int> eluer_sieve(int);
int main(){
vector<int> res;
int m,q;
cin>>m>>q;
res=eluer_sieve(m);
for(int i=1;i<=q;i++){
int seek;
cin>>seek;
cout<<res[seek-1]<<endl;
}
}
by Terrible @ 2024-04-20 23:02:04
@jam1270
你这是什么迷惑行为程序?你好好对照题解写一遍呀。
by User966827 @ 2024-04-21 11:52:24
#include<iostream>
using namespace std;
bool check[100000005];
int z[100000005];
int main()
{
std::ios::sync_with_stdio(0);
int n,q,cnt=0;
check[1]=1;
for(int i=2;i<=100000000;i++)
{
if(!check[i])
{
z[++cnt]=i;
}
for(int j=1;j<=cnt&&z[j]*i<=100000000;j++)
{
check[z[j]*i]=1;
if(i%z[j]==0)
{
break;
}
}
}
cin>>n>>q;
for(int i=1;i<=q;i++)
{
int x;
cin>>x;
cout<<z[x]<<"\n";
}
return 0;
}
@jam1270 你这代码好迷啊
by shimucheng @ 2024-06-16 21:52:18
【真】欧拉筛