版本 MinGW 13.2.0
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
void shai(int);
bool b[1000002];
vector<int> pr;
vector<int> pri;
bool isp[114514];
int l,u;
int minn,maxn;
int main(){
shai(50000);
while(cin>>l>>u){
memset(b,1,sizeof(b));
pri.clear();
for(auto &i:pr){
for(int j=(l+i-1)/i*i;j<=u;j+=i)
if(i!=j)
b[i-l]=0;
}
for(int i=l;i<=u;++i){
if(b[i-l])
pri.push_back(i);
}
if(pri.size()<2){
cout<<"There are no adjacent primes.\n";
continue;
}
minn=0x7fffffff,maxn=0;
for(int i=1;i<=pri.size();++i){
minn=min(minn,pri[i]-pri[i-1]);
maxn=max(maxn,pri[i]-pri[i-1]);
}
for(int i=1;i<=pri.size();++i){
if(pri[i]-pri[i-1]==minn){
cout<<pri[i-1]<<','<<pri[i]<<" are closest, ";
break;
}
}
for(int i=1;i<=pri.size();++i){
if(pri[i]-pri[i-1]==maxn){
cout<<pri[i-1]<<','<<pri[i]<<" are most distant.\n";
break;
}
}
}
return 0;
}
void shai(int n){
for(int i=2;i<=n;++i){
if(!isp[i])
pr.push_back(i);
for(auto &pri_j:pr){
if(i*pri_j>n)
break;
isp[i*pri_j]=1;
if(i%pri_j==0)
break;
}
}
}
编译产生 ld returned 1 exit status 的错误。
可是我并没有没关掉的任务啊。
有没有大佬能解释一下。