ACwing 196. 质数距离

#include <bits/stdc++.h> using namespace std;
const int N = , M = ;
int v[M];
long long prime[N],prim[N];
int cun=;
int inint(int n)
{

for(int i=;i&lt;=n;i++)<br/>
{<br/>
    if(!v[i])<br/>
    {<br/>
        v[i]=i;<br/>
        prim[cun++]=i;<br/>
    }<br/>
    for(int j=;j&lt;cun;j++)<br/>
    {<br/>
        if(prim[j]&gt;n/i||prim[j]&gt;v[i])break;<br/>
        v[i*prim[j]]= prim[j];<br/>
    }<br/>
}<br/>

}
int main()
{

long long l, r;<br/>
inint();<br/>
while(cin &gt;&gt; l&gt;&gt; r)<br/>

{

   memset(v,,sizeof(v));<br/>
   for(int i=;i&lt;cun;i++)<br/>
   {

long long p=prim[i];

       for(long long j = max(*p,(l+p-)/p*p);j&lt;=r;j+=p)<br/>
       {<br/>
           v[j-l]=;<br/>
       }<br/>
   }<br/>
   cun =;<br/>
   for(int i= ;i&lt;=r-l;i++)<br/>
   {<br/>
       if(v[i]==&amp;&amp;i+l&gt;)prime[cun++] = i;<br/>
   }<br/>
   if(cun &lt;)<br/>
   {<br/>
       cout &lt;&lt;&#34;There are no adjacent primes.&#34;&lt;&lt;endl;<br/>
   }<br/>
   else{<br/>
       int mind=,maxd=;<br/>
       for(int i=;i+&lt;cun;i++)<br/>
       {<br/>
           int d = prime[i+] - prime[i];<br/>
           if(d&gt;prime[maxd+]-prime[maxd])maxd=i;<br/>
           if(d&lt;prime[mind+]-prime[mind])mind = i;<br/>
       }<br/>
       printf(&#34;%d,%d are closest, %d,%d are most distant.\n&#34;,prime[mind]+l,prime[mind+]+l,prime[maxd]+l,prime[maxd+]+l);<br/>
   }<br/>

} return ;
}