[POJ268] Prime Distance(素数筛)
/*
* 二次筛素数
* 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(素数筛)的更多相关文章
- Prime Path素数筛与BFS动态规划
埃拉托斯特尼筛法(sieve of Eratosthenes ) 是古希腊数学家埃拉托斯特尼发明的计算素数的方法.对于求解不大于n的所有素数,我们先找出sqrt(n)内的所有素数p1到pk,其中k = ...
- ZOJ 1842 Prime Distance(素数筛选法2次使用)
Prime Distance Time Limit: 2 Seconds Memory Limit: 65536 KB The branch of mathematics called nu ...
- POJ - 2689 Prime Distance (区间筛)
题意:求[L,R]中差值最小和最大的相邻素数(区间长度不超过1e6). 由于非素数$n$必然能被一个不超过$\sqrt n$的素数筛掉,因此首先筛出$[1,\sqrt R]$中的全部素数,然后用这些素 ...
- POJ 2689 - Prime Distance - [埃筛]
题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...
- POJ2689 - Prime Distance(素数筛选)
题目大意 给定两个数L和U,要求你求出在区间[L, U] 内所有素数中,相邻两个素数差值最小的两个素数C1和C2以及相邻两个素数差值最大的两个素数D1和D2,并且L-U<1,000,000 题解 ...
- POJ 3126 Prime Path 素数筛,bfs
题目: http://poj.org/problem?id=3126 困得不行了,没想到敲完一遍直接就A了,16ms,debug环节都没进行.人品啊. #include <stdio.h> ...
- POJ-2689 Prime Distance (两重筛素数,区间平移)
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13961 Accepted: 3725 D ...
- POJ2689:Prime Distance(大数区间素数筛)
The branch of mathematics called number theory is about properties of numbers. One of the areas that ...
- poj 2689 Prime Distance(大区间筛素数)
http://poj.org/problem?id=2689 题意:给出一个大区间[L,U],分别求出该区间内连续的相差最小和相差最大的素数对. 由于L<U<=2147483647,直接筛 ...
随机推荐
- vue2中使用 better-scroll
使用时有三个要点: 一:html部分 <div class="example" ref="divScroll"> <div> <p ...
- Sring 类的例子
public class ZongHe { public static void main(String[] args) { function1(); funct ...
- elk-准备(一)
一.在搭建elk之前需要做准备工作 1.创建elk用户 groupadd elk -g 1001 useradd elk -m -d /home/elk -s /bin/bash -g 1001 -u ...
- meta标签大全(荐)
html的meta总结(常用) 1.Meta标签大全 <!-- 声明文档使用的字符编码 --> <meta charset='utf-8'> <!-- 优先使用 IE 最 ...
- SQL语句精简版
select US.QQ,US.tel,US.username,SC.EnglishScore,SC.MathScorefrom Userinfor US right join Score SC on ...
- LINUXJI积算器bc
hling@hling:~$ bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundatio ...
- FTPClient工具类
package com.vcredit.ddcash.server.commons.net; import com.vcredit.ddcash.server.commons.model.FtpPar ...
- mysql 锁查询
1.查看正在被锁定的的表 show OPEN TABLES where In_use > 0; in_use:多少个线程在使用 name_locked:是否被锁 2.查询哪些线程正在运行. 这个 ...
- C# 让String.Contains忽略大小写
在C#里,String.Contains是大小写敏感的,所以如果要在C#里用String.Contains来判断一个string里是否包含一个某个关键字keyword,需要把这个string和这个ke ...
- [Day14]Eclipse高级、类与接口作为参数返回值
l 不同修饰符的使用 类,最常使用public修饰 成员变量,最常使用private修饰 成员方法,最常使用public修饰 l 自定义数据类型的使用 类作为方法参数时,说明要向方 ...