using namespace std;
int l,r;
bool p[100010],p2[1000005];
int minp[100010]={0};
void onp(int n){
p[1]=1;
for(int i=2;i<=n;i++){
if(minp[i]==0)
minp[i]=i;
else
p[i]=1;
for(int j=2;j<=minp[i];j++){
if(!p[j]){
minp[j*i]=j;
}
}
}
}
int prime[1000005];
int main(){
onp(100005);
for(int i=2;i<=100005;i++)if(!p[i])cout<<i<<" ";
while(cin>>l>>r){
int sqr=int(sqrt(double(r)));
int m=0;
for(int i=1;i<=sqr;i++)
if(!p[i])
for(int j=floor(l/i);j<=ceil(r/i);j++)
p2[i*j-l+1]=1;
for(int i=1;i<=r-l+1;i++)if(!p2[i])prime[++m]=i+l-1;
if(m<=1){
cout<<"There are no adjacent primes.";
return 0;
}
int ans1,ans2,mn=0x3f3f3f3f,mx=0;
for(int i=1;i<=m;i++)
if(mn>(prime[i+1]-prime[i])){
mn=prime[i+1]-prime[i];
ans1=prime[i];
ans2=prime[i+1];
}
cout<<ans1<<","<<ans2<<" are closest, ";
for(int i=1;i<=m;i++)
if(mx<(prime[i+1]-prime[i])){
mx=prime[i+1]-prime[i];
ans1=prime[i];
ans2=prime[i+1];
}
cout<<ans1<<","<<ans2<<" are most distant.";
}
}
这代码为什么会re啊