键盘侠牧师
你的脸上风淡云轻,谁也不知道你的牙咬得有多紧。你走路带着风,谁也不知道你膝盖上仍有曾摔过的伤的淤青。你笑得没心没肺,没人知道你哭起来只能无声落泪。要让人觉得毫不费力,只能背后极其努力。我们没有改变不了的未来,只有不想改变的过去。
#include <bits/stdc++.h>

using namespace std;
const int N = 1000010, M = 5000010;
int v[M];
long long prime[N],prim[N];
int cun=0;
int inint(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(!v[i])
        {
            v[i]=i;
            prim[cun++]=i;
        }
        for(int j=0;j<cun;j++)
        {
            if(prim[j]>n/i||prim[j]>v[i])break;
            v[i*prim[j]]= prim[j];
        }
    }
}
int main()
{
    long long l, r;
    inint(1000010);
    while(cin >> l>> r)
   {
       memset(v,0,sizeof(v));
       for(int i=0;i<cun;i++)
       {
           
           long long p=prim[i];
           for(long long j = max(2*p,(l+p-1)/p*p);j<=r;j+=p)
           {
               v[j-l]=1;
           }
       }
       cun =0;
       for(int i= 0;i<=r-l;i++)
       {
           if(v[i]==0&&i+l>1)prime[cun++] = i;
       }
       if(cun <2)
       {
           cout <<"There are no adjacent primes."<<endl;
       }
       else{
           int mind=0,maxd=0;
           for(int i=0;i+1<cun;i++)
           {
               int d = prime[i+1] - prime[i];
               if(d>prime[maxd+1]-prime[maxd])maxd=i;
               if(d<prime[mind+1]-prime[mind])mind = i;
           }
           printf("%d,%d are closest, %d,%d are most distant.\n",prime[mind]+l,prime[mind+1]+l,prime[maxd]+l,prime[maxd+1]+l);
       }
   }

    return 0;
}

 

posted on 2019-08-19 15:44  键盘侠牧师  阅读(140)  评论(0编辑  收藏  举报