Description

给定两个整数 \(L,R\;(1\leq L\leq R\leq 2^{31},R-L\leq 10^6)\) ,求闭区间 \([L,R]\) 中相邻两个数最大的差是多少,输出这些质数。

Solution

任何一个合数 \(N\) 必定包含一个不超过 \(\sqrt N\) 的质因子。

所以,我们只需要用筛法求出 \(2-\sqrt N\) 之间的所有质数。对于每个质数 \(p\) ,把 \([L,R]\) 中能被 \(p\) 整除的数标记。

最终所有未被标记的数就是 \([L,R]\) 中的质数,对相邻的质数两两比较,找出差最大的即可。

还有一个要注意的是这题 \(L,R\) 范围太大,数组开不小,所以对于每个询问,都要加一个偏移量来进行标记和判断。

Code

#include<cmath>
#include<cstdio>
#include<cstring>
#define N 52005 int l,r;
int sum[1000005];
bool is_prime[N+10];
int prime[N],primecnt; void init(int n){
is_prime[1]=1;
for(int i=2;i<=N;i++){
if(!is_prime[i])
prime[++primecnt]=i;
for(int j=1;j<=primecnt;j++){
if(i*prime[j]>N) break;
is_prime[i*prime[j]]=1;
if(i%prime[j]) break;
}
}
} signed main(){
init(N);
while(~(scanf("%d%d",&l,&r))){
memset(sum,0,sizeof sum);
if(l==1) l++;
for(int i=1;i<=primecnt;i++){
for(int j=l/prime[i];j<=r/prime[i];j++){
if(prime[i]*j<l) continue;
if(j==1) continue;
sum[prime[i]*j-l]=1;
}
}
int tot=0,last=0;
int max1,max2,min1,min2;
int maxn=0xcfcfcfcf,minn=0x3f3f3f3f;
for(int i=0;i<=r-l;i++){
//printf("i=%d,sum=%d\n",i,sum[i]);
if(sum[i]) continue;
tot++;
if(tot>1){
if(maxn<i-last){
maxn=i-last;
max1=last,max2=i;
}
if(minn>i-last){
minn=i-last;
min1=last,min2=i;
}
}
last=i;
}
if(tot==1)
printf("There are no adjacent primes.\n");
else
printf("%d,%d are closest, %d,%d are most distant.\n",min1+l,min2+l,max1+l,max2+l);
}
return 0;
}

[POJ 2689] Prime Distance的更多相关文章

  1. poj 2689 Prime Distance(大区间素数)

    题目链接:poj 2689 Prime Distance 题意: 给你一个很大的区间(区间差不超过100w),让你找出这个区间的相邻最大和最小的两对素数 题解: 正向去找这个区间的素数会超时,我们考虑 ...

  2. poj 2689 Prime Distance (素数二次筛法)

    2689 -- Prime Distance 没怎么研究过数论,还是今天才知道有素数二次筛法这样的东西. 题意是,要求求出给定区间内相邻两个素数的最大和最小差. 二次筛法的意思其实就是先将1~sqrt ...

  3. 数论 - 素数的运用 --- poj 2689 : Prime Distance

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12512   Accepted: 3340 D ...

  4. [ACM] POJ 2689 Prime Distance (筛选范围大素数)

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12811   Accepted: 3420 D ...

  5. poj 2689 Prime Distance(区间筛选素数)

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9944   Accepted: 2677 De ...

  6. POJ 2689 - Prime Distance - [埃筛]

    题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...

  7. POJ 2689 Prime Distance (素数+两次筛选)

    题目地址:http://poj.org/problem?id=2689 题意:给你一个不超过1000000的区间L-R,要你求出区间内相邻素数差的最大最小值,输出相邻素数. AC代码: #includ ...

  8. poj 2689 Prime Distance(大区间筛素数)

    http://poj.org/problem?id=2689 题意:给出一个大区间[L,U],分别求出该区间内连续的相差最小和相差最大的素数对. 由于L<U<=2147483647,直接筛 ...

  9. POJ 2689 Prime Distance(素数筛选)

    题目链接:http://poj.org/problem?id=2689 题意:给出一个区间[L, R],找出区间内相连的,距离最近和距离最远的两个素数对.其中(1<=L<R<=2,1 ...

  10. 题解报告:poj 2689 Prime Distance(区间素数筛)

    Description The branch of mathematics called number theory is about properties of numbers. One of th ...

随机推荐

  1. docker日志设置定期清理

    1.新建/etc/docker/daemon.json,若有就不用新建了 2.添加log-dirver和log-opts参数,样例如下 "log-driver":"jso ...

  2. javaScrpit 开端

    JavaScript 代码可以直接嵌在网页的任何地方,不过我们通常把JavaScrpit放到<head>中: <html> <head> <script> ...

  3. 使用注解配置Spring

    使用注解配置Spring 1.为主配置文件引入新的命名空间(约束) 2.开启使用注解代理配置文件 3.在类中使用注解完成配置 将对象注册到容器 修改对象的作用范围 值类型注入 引用类型注入 注意: 初 ...

  4. python模块:configparser

    """Configuration file parser. A configuration file consists of sections, lead by a &q ...

  5. 过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)

    一.Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...

  6. 用Dockerfile创建镜像--自动化部署tomcat+mysql+mycat

    https://www.jianshu.com/p/a14b34386b41

  7. Java变成思想总结

    Java容器 collection一个独立的元素序列,这些元素都服从一条或多条规则.list必须按照插入的顺序保存元素,set不能有重复元素,queue按照排队的顺序确定对象产生的顺序.map一组成对 ...

  8. 关于wifi网络基本原理了解

    对于esp32,其wifi功能还是十分强大的,为了能够良好的完成wifi的相关开发,这里需要计算机网络的结构体系进行大致的了解. 一.网络结构分层 对于计算机网络结构,大体上可以分为5层结构: 物理层 ...

  9. 仿boost::any的泛型指针类any的实现

    在boost库中,any是一种特殊容器,只能容纳一个元素,但这个元素可以是任意的类型----int.double.string.标准容器或者任何自定义类型.程序可以用any保存任意的数据,也可以在任何 ...

  10. Nextday 参数化单元测试(测试用例)设计

    一.首先简单描述一下下载试题及配置试题的过程 配置环境:安装Eclipse.JDK(1.7).及考试插件 (net.mooctest....*.jar)等: 登录系统:运行Eclipse: [Mooc ...