/**
给定一定范围求其内的素数 注意:
**/ #include <iostream>
#include <math.h>
#include <cstring>
using namespace std;
#define maxn 1000000
long long prime[];
long long cprime[];
long long isprime[maxn+];
long long vis[maxn+];
long long q;
void getprime(){
//memset(isprime,0,sizeof(isprime));
q =-;
long long i,j;
isprime[] = isprime[] =;
for(i=;i<maxn;i++){
if(!isprime[i])
prime[++q] = i;
for(j=;j<=q&&prime[j]*i<maxn;j++){
isprime[prime[j]*i] =;
if(i%prime[j]==)
break;
}
}
} long long qt;
void getprime1(long long a, long long b){
qt =-;
if(b<maxn){
for(long long i=a;i<=b;i++){
if(!isprime[i])
cprime[++qt] = i;
}
}else{
memset(vis,,sizeof(vis));
long long i,k;
for(i=;i<=b-a;i++){
vis[i] =;
}
for(i=;prime[i]*prime[i]<=b&&i<=q;i++){
k = a/prime[i];
if(k*prime[i]<a) k++;
if(k<=) k++;
while(k*prime[i]<=b){
vis[k*prime[i]-a] =;
k++;
}
}
for(i=;i<=b-a;i++){
if(vis[i]==)
cprime[++qt] = i+a;
}
} }
int main()
{
getprime();
//for(int i=0;i<10;i++)
// cout<<prime[i]<<endl;
long long a,b;
while(cin>>a>>b){
long long maxnum =-;
long long minnum =0x3f3f3f3f;
getprime1(a,b);
long long max1,max2,min1,min2;
// for(int i=0;i<=qt;i++)
// cout<<cprime[i]<<endl;
for(long long i=;i<qt;i++){
long long temp = cprime[i+]-cprime[i];
if(temp>maxnum){
maxnum =temp;
max1 = cprime[i];
max2 = cprime[i+];
}
if(temp<minnum){
minnum =temp;
min1 = cprime[i];
min2 = cprime[i+];
}
}
if((qt+)<=)
cout<<"There are no adjacent primes."<<endl;
else
cout<<min1<<","<<min2<<" are closest, "<<max1<<","<<max2<<" are most distant."<<endl;
}
return ;
}

poj 2689 大范围内素数筛选的更多相关文章

  1. POJ 2689 Prime Distance (素数筛选法,大区间筛选)

    题意:给出一个区间[L,U],找出区间里相邻的距离最近的两个素数和距离最远的两个素数. 用素数筛选法.所有小于U的数,如果是合数,必定是某个因子(2到sqrt(U)间的素数)的倍数.由于sqrt(U) ...

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

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

  3. poj 2262 Goldbach's Conjecture(素数筛选法)

    http://poj.org/problem?id=2262 Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total ...

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

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

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

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

  6. 大区间素数筛选(POJ 2689)

    /* *POJ 2689 Prime Distance *给出一个区间[L,U],找出区间内容.相邻的距离最近的两个素数和距离最远的两个素数 *1<=L<U<=2147483647 ...

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

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

  8. ACM/ICPC 之 数论-素数筛选法 与 "打表"思路(POJ 1595)

    何为"打表"呢,说得简单点就是: 有时候与其重复运行同样的算法得出答案,还不如直接用算法把这组数据所有可能的答案都枚举出来存到一个足够大的容器中去-例如数组(打表),然后再输入数据 ...

  9. POJ 2773 Happy 2006#素数筛选+容斥原理+二分

    http://poj.org/problem?id=2773 说实话这道题..一点都不Happy好吗 似乎还可以用欧拉函数来解这道题,但正好刚学了容斥原理和二分,就用这个解法吧. 题解:要求输出[1, ...

随机推荐

  1. clinit和init(转载)

    clinit和init(转载)   今天在看深入Java虚拟机的class文件结构时,看到了这么一句话, 可能出现在class文件中的两种编译器产生的方法是:实例初始化方法(名为<init> ...

  2. C# 知识点记录(持续更新中)

    从看C#入门经典开始系统的学习C#,本文主要记录学习过程中的一些知识点,也是我博客生涯的开始,比较重要成体系的部分会单重新写文章整理归纳. 1.一字不变的字符串 @字符 使转义序列不被处理,按照原样输 ...

  3. Algorithms 4th - 1.1 Basic Programming Model - EXERCISES

    欢迎交流 1.1.1 a. 7 b. 200.0000002 c. true 1.1.2 a. 1.618 b. 10.0 c. true d. 33 1.1.3 public class MainA ...

  4. Linux学习之(())操作符

    在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:l ...

  5. 再谈PHP、Python与Ruby

    一句话总结 简单地总结: 假如你想帮他尽快找个活儿,赚到钱,推荐PHP. 假如你想让他成为一个高效工程师,推荐 Python. 假如你想让他爱上他的工作,推荐 Ruby. 语言的选择 编程语言非常重要 ...

  6. flush privileges是什么意思?

    flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里.MySQL用户数据和权限有修改后 ...

  7. C#学习日志 day8 -------------- async await 异步方法入门(引用博客)以及序列化和反序列化的XML及json实现

    首先是异步方法的介绍,这里引用自http://www.cnblogs.com/LoveJenny/archive/2011/11/01/2230933.html async and await 简单的 ...

  8. 使用MIDAS访问远程Access数据库

    使用MIDAS访问远程Access数据库         Allen Tao(http://blog.csdn.net/allentao/) 2005-5-3 本文源码下载 访问远程数据库常用的办法是 ...

  9. HDU 5972 Regular Number(ShiftAnd+读入优化)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5972 [题目大意] 给出一个字符串,找出其中所有的符合特定模式的子串位置,符合特定模式是指,该子串 ...

  10. Qt编写端口扫描工具

    Qt提供了QTcpSocket类,可以方便地建立TCP连接.利用这一功能,Maxiee编写了一个简单地端口扫描工具. 软件的功能就是,扫描某一网段的固定端口,如80端口,若目的地址开放了这一端口,那么 ...