#include <bits/stdc++.h>
using namespace std;
long long l1,r1,l2,r2;
long long lft,rht,lst;
int minn,maxn,p;
bool flag;
bool judge(long long num)
{
if(num<=3)
return num>1;
if(num%6!=1&&num%6!=5)
return false;
for(long long i=5;i<=sqrt(num);i+=6)
if(num%i==0||num%(i+2)==0)
return false;
return true;
//优化过的质数判定
}
int main()
{
while(cin>>lft>>rht)
{
p=lst=0;
maxn=-1;
minn=1000001;
flag=false;
for(long long i=lft;i<=rht;i++)
{
//这里穷举
if(judge(i))
{
if(!lst)
{
lst=i;
p=0;
continue;
}
if(!flag)
flag=true;
if(p<minn)
minn=p,l1=lst,r1=i;
if(p>maxn)
maxn=p,l2=lst,r2=i;
lst=i;
p=0;
}
p++;
}
if(!flag)
cout<<"There are no adjacent primes.";
else
cout<<l1<<","<<r1<<" are closest, "<<l2<<","<<r2<<" are most distant.";
cout<<endl;
}
return 0;
}
我的思路好像有点奇特鹅 怎么搞QwQ