ACwing 196. 质数距离
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:53
#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<=n;i++)<br/>
{<br/>
if(!v[i])<br/>
{<br/>
v[i]=i;<br/>
prim[cun++]=i;<br/>
}<br/>
for(int j=;j<cun;j++)<br/>
{<br/>
if(prim[j]>n/i||prim[j]>v[i])break;<br/>
v[i*prim[j]]= prim[j];<br/>
}<br/>
}<br/>
}
int main()
{
long long l, r;<br/>
inint();<br/>
while(cin >> l>> r)<br/>
{
memset(v,,sizeof(v));<br/>
for(int i=;i<cun;i++)<br/>
{
long long p=prim[i];
for(long long j = max(*p,(l+p-)/p*p);j<=r;j+=p)<br/>
{<br/>
v[j-l]=;<br/>
}<br/>
}<br/>
cun =;<br/>
for(int i= ;i<=r-l;i++)<br/>
{<br/>
if(v[i]==&&i+l>)prime[cun++] = i;<br/>
}<br/>
if(cun <)<br/>
{<br/>
cout <<"There are no adjacent primes."<<endl;<br/>
}<br/>
else{<br/>
int mind=,maxd=;<br/>
for(int i=;i+<cun;i++)<br/>
{<br/>
int d = prime[i+] - prime[i];<br/>
if(d>prime[maxd+]-prime[maxd])maxd=i;<br/>
if(d<prime[mind+]-prime[mind])mind = i;<br/>
}<br/>
printf("%d,%d are closest, %d,%d are most distant.\n",prime[mind]+l,prime[mind+]+l,prime[maxd]+l,prime[maxd+]+l);<br/>
}<br/>
}
return ;
}
相关文章
-
AcWing 284. 金字塔 (区间dp的递归算法和记忆化搜索)
AcWing 284. 金字塔 (区间dp的递归算法和记忆化搜索)
- 互联网
- 2026年04月04日
-
AD16 PCB 线路层删除
AD16 PCB 线路层删除
- 互联网
- 2026年04月04日
-
adb sdcard 是否存在
adb sdcard 是否存在
- 互联网
- 2026年04月04日
-
activiti中心文档下载
activiti中心文档下载
- 互联网
- 2026年04月04日
-
activiti排他网关驳回
activiti排他网关驳回
- 互联网
- 2026年04月04日
-
Activiti7开发(二)
Activiti7开发(二)
- 互联网
- 2026年04月04日






