链接:

https://www.acwing.com/problem/content/198/

题意:

给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对。

同时,你还需要找到距离最远的两个相邻质数D1和D2(即D1-D2是最大的),如果存在相同距离的其他相邻质数对,则输出第一对。

思路:

筛除,l-r中的素数, 使用区间筛法, 先筛出1-sqrt(r), 再筛l-r.

记录l-r的素数,挨个判断.

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int MAXN = 1e6+10;
int IsPri1[MAXN], IsPri2[MAXN];
LL Pri[MAXN], Res[MAXN];
LL l, r;
int pos; void Euler()
{
memset(IsPri1, 0, sizeof(IsPri1));
memset(IsPri2, 0, sizeof(IsPri2));
pos = 0;
for (int i = 2;i <= sqrt(r);i++)
{
if (IsPri1[i] == 0)
Pri[++pos] = i;
for (int j = 1;j <= pos && Pri[j]*i <= sqrt(r);j++)
{
IsPri1[Pri[j]*i] = 1;
if (i%Pri[j] == 0)
break;
}
}
for (int i = 1;i <= pos;i++)
{
for (LL j = max(2LL, (0LL+l+Pri[i]-1)/Pri[i])*Pri[i];j <= r;j += Pri[i])
IsPri2[j-l+1] = 1;
}
} int main()
{
while (~scanf("%lld%lld", &l, &r))
{
Euler();
int cnt = 0;
int sl, sr, bl, br;
int sv = 1e9, bv = 0;
if (l == 1)
IsPri2[l] = 1;
for (int i = 1;i <= r-l+1;i++)
{
if (IsPri2[i] == 0)
Res[++cnt] = i+l-1;
}
if (cnt < 2)
printf("There are no adjacent primes.\n");
else
{
for (int i = 1;i < cnt;i++)
{
if (Res[i+1]-Res[i] < sv)
{
sv = Res[i+1]-Res[i];
sl = Res[i], sr = Res[i+1];
}
if (Res[i+1]-Res[i] > bv)
{
bv = Res[i+1]-Res[i];
bl = Res[i], br = Res[i+1];
}
}
printf("%d,%d are closest, %d,%d are most distant.\n", sl, sr, bl, br);
}
} return 0;
}

Acwing-196-质数距离(素数区间筛法)的更多相关文章

  1. AcWing 196. 质数距离(筛法+离散化)打卡

    给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你还需要找到距离最远的两个相邻质数 ...

  2. ACwing 196. 质数距离

    #include <bits/stdc++.h> using namespace std; , M = ; int v[M]; long long prime[N],prim[N]; ; ...

  3. POJ-2689-Prime Distance(素数区间筛法)

    链接: https://vjudge.net/problem/POJ-2689 题意: The branch of mathematics called number theory is about ...

  4. poj2689(素数区间筛法模板)

    题目链接: http://poj.org/problem?id=2689 题意: 给出一个区间 [l, r] 求其中相邻的距离最近和最远的素数对 . 其中 1 <= l <  r < ...

  5. poj2689 Prime Distance(素数区间筛法)

    题目链接:http://poj.org/problem?id=2689 题目大意:输入两个数L和U(1<=L<U<=2 147 483 647),要找出两个相邻素数C1和C2(L&l ...

  6. POJ2689 [质数距离] 题解

    质数距离 题目TP门 题目描述 给定两个整数L和R,你需要在闭区间[L,R]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你 ...

  7. c# 计算1-100之间的所有质数(素数)的和

    求1-100之间的所有质数(素数)的和: 所以先必须知道什么是质数? 一个数是不是素数   “素数”是指除了能被1和自身整除外,不能被任何其它整数整除的自然数. 然后知道有哪些是质数: 记忆的方法: ...

  8. d029: 求出2-100之间的所有质数(素数)

    内容: 求出2-100之间的所有质数(素数) 输入说明: 无 输出说明: 一行一个素数 /* 质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数(不包括0)整除的数. */ ...

  9. java求0~100的质数(素数)

    质数的概念: 简单的来说就是一个数从2开始取模到(求余数)自身的值,如果取模后余数一直不等于0那么这个数就是质数(素数). 如 7     7%2    7%3    7%4    7%5   7%6 ...

随机推荐

  1. PAT(Advanced Level)1055.The World's Richest

    Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...

  2. 详解vue 路由跳转四种方式 (带参数)

    详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 ...

  3. Linux系列(11):之bash进阶与数据流导向、管线命令

    1.万用字符与特殊字符 在bash的环境下有一个特别有用的功能,那就是万用字符!下面展示常见的万用字符: 1.万用字符 除了万用字符还有一些其他的特殊字符,接下来显示特殊字符. 2.特殊字符 2.数据 ...

  4. POJ - 3687 Labeling Balls (拓扑)

    (点击此处查看原题) 题意 此处有n盏灯,编号为1~n,每盏灯的亮度都是唯一的,且在1~n范围之间,现已知m对灯之间的关系:a b ,说明灯a的亮度比灯b小,求出每盏灯的亮度,要求字典序最小(编号小的 ...

  5. 数位dp详解&&LG P2602 [ZJOI2010]数字计数

    数位dp,适用于解决一类求x~y之间有多少个符合要求的数或者其他. 例题 题目描述 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除 ...

  6. MySQL-存储引擎-创建表-字段数据类型-严格模式-字段约束-键-02

    目录 扩展点 查看服务端字符.IP.端口配置 取消本次错误输入 例外情况 database 数据库操作 table 数据表操作 查看MySQL存储引擎 常见几个存储引擎 InnoDB MyISAM M ...

  7. 如何使用加多宝(jdb)在linux下调试Java程序

    毕业时写了一段时间的C,那时候调试使用gdb,后来转了java,当时就想java程序怎么调试,找了一下,果然,那就是jdk自带的jdb windows里是这样的 Linux下是这样的 一般我在linu ...

  8. 怎样在 Linux 上查看某个端口的相关信息?

    比如 TCP端口 / UDP端口 / 端口占用程序的进程号 等, 这些信息都可以使用: netstat -atunlp | grep 端口号 来进行获取. 比如我们想获取 22 端口的相关信息: 这里 ...

  9. EXSI宿主机更换硬盘后虚机启动有问题

    环境说明: 最近EXSI主机磁盘坏掉了,重新换掉磁盘以后启动虚机有问题. 虚机的报错信息如下: 找了下修复方法,操作过程为: 尝试修复 (以下是百度的方法) ls -l /dev/mapper mkd ...

  10. Maven maven-compiler-plugin 编译问题

    问题:每次右键项目名-maven->update project 时候,项目jdk版本变了,变回1.5版本或者其他版本 解决方案一:修改maven的配置(解压目录的conf\setting.xm ...