/*
* 二次筛素数
* POJ268————Prime Distance(数论,素数筛)
*/ #include<cstdio>
#include<vector> using namespace std; const int maxn = 1000005; typedef long long LL; bool is_prime_small[maxn];
bool is_prime[maxn]; vector <int> res; int main() {
LL l,u;
while(scanf("%lld%lld",&l,&u) != EOF) {
for(LL i = 0;i*i < u;i++) {
is_prime_small[i] = true;
}
for(LL i = 0;i <= u-l;i++) {
is_prime[i] = true;
}
is_prime_small[1] = false;
if(l == 1)
is_prime[0] = false;
for(LL i = 2;i*i <= u;i++) {
if(is_prime_small[i]) {
for(LL j = 2*i;j*j <= u;j+=i) {
is_prime_small[j] = false;
}
for(LL j = max(2LL,(l+i-1)/i) * i;j <= u;j+=i) {
is_prime[j-l] = false;
}
}
}
res.clear();
for(LL i = l;i <= u;i++) {
if(is_prime[i - l]) {
res.push_back(i);
}
}
if(res.size() <= 1) {
printf("There are no adjacent primes.\n");
continue;
}
//避免这样写,可能会导致某些变量没有被赋值
// LL maxx = res[1] - res[0],b1,b2;
// LL minn = res[1] - res[0],a1,a2;
LL b1 = res[0],b2 = res[1],maxx = b2 - b1;
LL a1 = res[0],a2 = res[1],minn = a2 - a1;
for(LL i = 2;i < res.size();i++) {
if(maxx < res[i] - res[i-1]) {
maxx = res[i] - res[i - 1];
b2 = res[i];
b1 = res[i-1];
} else if(minn > res[i] - res[i-1]) {
minn = res[i] - res[i-1];
a2 = res[i];
a1 = res[i-1];
}
}
printf("%lld,%lld are closest, %lld,%lld are most distant.\n",a1,a2,b1,b2);
}
return 0;
}

[POJ268] Prime Distance(素数筛)的更多相关文章

  1. Prime Path素数筛与BFS动态规划

    埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法.对于求解不大于n的所有素数,我们先找出sqrt(n)内的所有素数p1到pk,其中k = ...

  2. ZOJ 1842 Prime Distance(素数筛选法2次使用)

    Prime Distance Time Limit: 2 Seconds      Memory Limit: 65536 KB The branch of mathematics called nu ...

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

    题意:求[L,R]中差值最小和最大的相邻素数(区间长度不超过1e6). 由于非素数$n$必然能被一个不超过$\sqrt n$的素数筛掉,因此首先筛出$[1,\sqrt R]$中的全部素数,然后用这些素 ...

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

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

  5. POJ2689 - Prime Distance(素数筛选)

    题目大意 给定两个数L和U,要求你求出在区间[L, U] 内所有素数中,相邻两个素数差值最小的两个素数C1和C2以及相邻两个素数差值最大的两个素数D1和D2,并且L-U<1,000,000 题解 ...

  6. POJ 3126 Prime Path 素数筛,bfs

    题目: http://poj.org/problem?id=3126 困得不行了,没想到敲完一遍直接就A了,16ms,debug环节都没进行.人品啊. #include <stdio.h> ...

  7. POJ-2689 Prime Distance (两重筛素数,区间平移)

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13961   Accepted: 3725 D ...

  8. POJ2689:Prime Distance(大数区间素数筛)

    The branch of mathematics called number theory is about properties of numbers. One of the areas that ...

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

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

随机推荐

  1. spring和jdbctemplate

    1.spring与jdbc整合应用 a.增删改 -获取connection -获取statement -设置sql中?参数 -执行sql操作 -释放connection b.查询 -获取connect ...

  2. java爬取网站信息和url实例

    https://blog.csdn.net/weixin_38409425/article/details/78616688(出自此為博主) 具體代碼如下: import java.io.Buffer ...

  3. padding 和 float属性

    padding = {上内,右内,下内,左内} 内边距 padding:"10, 5,15,20" float = "true"  控件固定住.

  4. Oracle课程档案,第十六天

    restore:恢复文件 recover: 恢复日志 丢失current日志组(正常关闭数据库):故障:SQL> select group#, status from v$log; 确认curr ...

  5. python全栈开发 * 36知识点汇总 * 180721

    36 操作系统的发展史 进程一.手工操作--穿孔卡片 1.内容: 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制 台开关启动程序针对 ...

  6. python全栈开发 * 26知识点汇总 * 180709

    26 logging collections random 模块 一.logging低配:日志不能写入文件与显示同时进行 import logging logging.basicConfig(leve ...

  7. 树莓派3 之 pi3Robot 控制系统配置

    需求 个人正在用Python写一个控制系统,技术选型是python3 + Flask + Mysql + Bootstrap.需要将这套系统直接部署到树莓派中. 代码地址:https://github ...

  8. app优化篇

    UIImageView高效加个圆角 一般通过clipsToBounds和layer.cornerRadius会强制Core Animation提前渲染屏幕的离屏绘制,影响性能. 通过贝塞尔曲线切割图片 ...

  9. Python学习之高级数组(一)

    1.Python基础学习之高级数组(一) 1.1视图:就是与较大数组共享相同数据的较小数组.Numpy包提供数据视图的概念是为了精确地控制内存的使用方式.  数组视图.切片视图.转置和重塑视图等 数组 ...

  10. VC++运行库 集32位/64位整合版

    运行程序时,win7/win10(x86和x64)常会遇到缺少什么缺少msvc***.dll问题 安装下面链接提供的程序,安装后,便可解决. [2016-10-10]Microsoft Visual ...