UVA10140 Prime Distance

给定两个整数L,R(1<=L<=R<=2^{31},R-L<=10^6)L,R(1<=L<=R<=231,R−L<=106),求闭区间 [L,R][L,R] 中相邻两个质数的差的最小值和最大值是多少,分别输出这两个质数。

  • 首先我们发现:R-LR−L 的范围很小,我们应该要能够快速求出 L\sim RL∼R 之间的质数。

    显然有推论:任意一个合数 xx 必定包含一个不超过 \sqrt xx​ 的质因子。

    所以我们可以筛出 [1,\sqrt R][1,R​] 之间的所有质数,对于每个质数 pp,把 [L,R][L,R] 中能被 pp 整除的数标记为合数。最终没有被标记的数就是质数,对相邻的质数两两比较,找出差值最小和最大的即可。

#include <map>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;typedef long long LL;
#define res register int
const LL N=1e6+100;
LL v[N],p[N],tot;
LL L,R;inline LL max(LL a,LL b){return a>b?a:b;}
inline LL min(LL a,LL b){return a<b?a:b;}inline void primes(LL n)
{memset(v,0,sizeof(v)); tot=0;for(res i=2 ; i<=n ; i++){if(!v[i]) v[i]=i,p[++tot]=i;for(res j=1 ; j<=tot ; j++){if(p[j]>n/i || p[j]>v[i]) break;v[i*p[j]]=p[j];}}
}LL a[N],cnt;
LL vis[N];
int main()
{primes(N);while(cin>>L>>R){memset(vis,0,sizeof(vis));for(res i=1 ; i<=tot ; i++){for(res j=L/p[i] ; p[i]*j<=R ; j++){LL x=j*p[i];if(j>1 && x>=L) vis[x-L]=1;}}if(L==1) vis[0]=1;cnt=0;for(res i=L ; i<=R ; i++) if(!vis[i-L]) a[++cnt]=i;if(cnt<=1) {puts("There are no adjacent primes.");continue;}LL maxn(-1e9),minn(1e9),x,y;for(res i=1 ; i<cnt ; i++) if(a[i+1]-a[i]<minn) minn=a[i+1]-a[i],x=a[i],y=a[i+1];printf("%lld,%lld are closest, ",x,y);for(res i=1 ; i<cnt ; i++) if(a[i+1]-a[i]>maxn) maxn=a[i+1]-a[i],x=a[i],y=a[i+1];printf("%lld,%lld are most distant.\n",x,y);     }return 0;
}

  

转载于:https://www.cnblogs.com/wmq12138/p/10425157.html

UVA10140 Prime Distance相关推荐

  1. Prime Distance On Tree-树分治+FFT

    题目描述 Problem description. You are given a tree. If we select 2 distinct nodes uniformly at random, w ...

  2. 解题报告:poj2689 Prime Distance

    2017-10-03 11:29:20 writer:pprp 来源:kuangbin模板 从已经筛选好的素数中筛选出规定区间的素数 /* *prime DIstance *给出一个区间[L,U],找 ...

  3. 1619 例题 Prime Distance(POJ2689 LOJ10197 UVA10140 提高+/省选-) 线性筛 映射关系 0分 筛出区间内质数 超时0分 求任意区间质数的筛子100分

    总目录 在线测评地址(ybt)   只有1个测试点 在线测评地址(POJ)   无法提交 在线测评地址(LOJ)   只有1个测试点 在线测评地址(LUOGU)   要有UVA账号才能提交 1.0分代 ...

  4. Prime Distance POJ - 2689 线性筛

    一个数 $n$ 必有一个不超过 $\sqrt n$ 的质因子. 打表处理出 $1$ 到 $\sqrt n$ 的质因子后去筛掉属于 $L$ 到 $R$ 区间的素数即可. Code: #include&l ...

  5. POJ - 2689 Prime Distance(素数区间筛模板)

    题目链接:点击查看 题目大意:给出一段闭区间[l,r],求区间内相邻距离最大的素数对和相邻距离最小的素数对,题目保证r-l<=1e6,1<=l<=r<= 题目分析:因为我们要求 ...

  6. uva 10140——Prime Distance

    题意:题目出的很简单,给定一个数据范围(好吧,又是给定一个范围),然后问你在这个给定的范围内,哪两个相邻素数挨的最近,哪两个最远. 思路:这破题数据量很大,如果直接打表,铁定T,我蛋疼地打过两边了,T ...

  7. 《算法入门经典大赛——培训指南》第二章考试

    UVa特别考试 UVa站点专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge& ...

  8. ICPC程序设计题解书籍系列之九:罗勇军《算法竞赛入门到进阶》

    罗书<算法竞赛入门到进阶>题目一览 第1章 算法竞赛概述 HDU1000 HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)( ...

  9. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

最新文章

  1. jmeter 取json值_干货丨实战经验分析,带你走进Jmeter参数化
  2. 你要避开的 5 个数据驱动雷区
  3. Docker 环境下部署 redash
  4. windbg调试windows下的程序
  5. Python编程基础05:运算符与表达式
  6. bzoj3744: Gty的妹子序列 (BIT 分块)
  7. LeetCode Maximum Product Subarray 解题报告
  8. DOIT多易教育简介
  9. 华三模拟器(路由器)实现ipsec穿越NAT实验
  10. 计算机研究院分所烟台,综合新闻_中科院计算所烟台分所 烟台中科网络技术研究所...
  11. 银行统一支付平台(介绍、架构)
  12. 【信息收集】用python获取IP信息(六)
  13. 超声成像_人工智能如何帮助转变医学超声成像
  14. C语言学习笔记(十五)
  15. 带上紧箍咒,特斯拉辅助驾驶系统即将更新
  16. 微信缓存dat怎么转图片_微信 .dat图片格式转换为.jpg
  17. 【云计算学习教程】IaaS、PaaS和SaaS:云计算的三种服务模式(精讲)
  18. 使用 Python 构建图片搜索引擎
  19. CNN---用于图像分类的经典的卷积神经网络CNN
  20. oracle19c xp安装 客户端_dba+开源工具:傻瓜式免安装搞定Centos资源监控

热门文章

  1. VB判断指定名字的进程是否存在函数
  2. [原创]windows下unix2dos dos2unix 文本文件批量转换工具
  3. 谷歌用AI诊断早期肺癌超越人类医生,登上Nature子刊
  4. 打字方式异于常人,可能脑子有病丨AI研究
  5. 富士康iPhone生产线自动化进展太缓,所以无法遵守中国的加班条例?
  6. 无人驾驶、免费乘坐,硅谷的出租车行业要变天了
  7. 独家 | 腾讯无人车首次曝光,还把车子开上了四环
  8. python内置数据结构方法的时间复杂度
  9. linux安装nfs服务器
  10. window7 64位下Android studio 安装genymotion模拟器