题意:求大区间A  B内离的最近和最远的两个素数,A B<=2,147,483,647。

分析:先用大素数的线性筛法,预处理出1~sqrt(2,147,483,647)的所有素数,然后用 b[0] ~ b[B-A],来表示A+(0) ~ A+(B-A)的数是否是素数。。

即若素数p*k = A+x  -->  A+x不是素数  -->  b[x]=1 。

#define Max  2147483647
#define maxn 50000
int prime[maxn],p;
bool vis[maxn] ;
void getPrime(int n){//大范围内素数的线性筛法FOE(i,2,n){if( !vis[i])prime[p++] = i;for(int j = 0;j < p && prime[j] * i <= n; j++){vis[prime[j] * i] = true;if(i % prime[j] == 0)break;}}
}int pri[500000],q;
bool v[1000000];
void getPri(int a,int b){//求区间a b的素数//prime[0~p]先存放2到sqrt(b_max)的素数memset(v,0,(b-a+3)*sizeof(bool)); q=0;for(int i = 0; prime[i]*prime[i] <= b && i < p;i++){long long k = a/prime[i];if (k*prime[i] < a) k++;if (k <= 1) k++;while(k*prime[i] <= b){v[k*prime[i] - a] = 1;k++;}}FOE(i,0,b-a)if(v[i] == 0)pri[q++] = a+i;
}int L,U;
void solve(){int x1,x2,y1,y2;x1=x2=-1;   y2=Max; y1=0;FOR(i,1,q){if(x2-x1<pri[i]-pri[i-1])x1=pri[i-1],x2=pri[i];if(y2-y1>pri[i]-pri[i-1])y1=pri[i-1],y2=pri[i];}if(L==1){if(U==2) cout<<"There are no adjacent primes."<<endl;else if(U<5) cout<<2<<","<<3<<" are closest, "<<2<<","<<3<<" are most distant."<<endl;else cout<<2<<","<<3<<" are closest, "<<x1<<","<<x2<<" are most distant."<<endl;}else if(x1==-1)cout<<"There are no adjacent primes."<<endl;else cout<<y1<<","<<y2<<" are closest, "<<x1<<","<<x2<<" are most distant."<<endl;
}int main(){int t=sqrt((double)Max);getPrime(t);while(cin>>L>>U){getPri(L,U);solve();}return 0;
}

转载于:https://www.cnblogs.com/ts65213/archive/2013/05/29/3107169.html

poj 2689 大范围素数相关推荐

  1. POJ - 2689 Prime Distance(素数区间筛模板)

    题目链接:点击查看 题目大意:给出一段闭区间[l,r],求区间内相邻距离最大的素数对和相邻距离最小的素数对,题目保证r-l<=1e6,1<=l<=r<= 题目分析:因为我们要求 ...

  2. 计算一个尽可能大的素数

    在有限的时间内,计算出一个尽可能大的素数 一.问题点 有限时间:在一个可接受的时间范围内,并非依靠暴力求解 尽可能大:可计算素数的上限 素数:因数只有1和它本身的自然数 二.素数的生成 n 位的十进制 ...

  3. Poj 1811 Prime Test 素数测试 Miller-Rabin 与 整数的因子分解 Pollard rho

    随机化算法,想尝试自己写一下,最后还是变成了抄代码... 代码参考了:POJ 1811 Prime Test(大素数判断和素因子分解) - kuangbin - 博客园 学习链接: Miller-Ra ...

  4. LightOJ1197 Help Hanzo —— 大区间素数筛选

    题目链接:https://vjudge.net/problem/LightOJ-1197 1197 - Help Hanzo     PDF (English) Statistics Forum Ti ...

  5. Prime Distance POJ - 2689 线性筛

    一个数 $n$ 必有一个不超过 $\sqrt n$ 的质因子. 打表处理出 $1$ 到 $\sqrt n$ 的质因子后去筛掉属于 $L$ 到 $R$ 区间的素数即可. Code: #include&l ...

  6. POJ 1459--最大流算法

    cin竟然比scanf慢了十几倍,想不通 #include <iostream> #include <string> #include <vector> #incl ...

  7. Prime Count 求大区间素数个数

    http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605 ...

  8. JAVA大数--POJ 1715 大菲波数

    Problem Description Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3. 计算第n项Fibonacci数值.  Inp ...

  9. linux设置anaconda环境变量,在Linux中永久设置Anaconda环境变量的方法

    [感谢:http://www.codesec.net/view/459539.html] 如果在安装Anaconda的过程中没有将安装路径添加到系统环境变量中,需要在安装后手工添加: 1.在终端输入$ ...

最新文章

  1. WordCount案例
  2. win7‘上帝模式’
  3. shell编程之正则表达式
  4. jenkins编译java_在Window上使用Jenkins自动发布Java工件
  5. 天池-新闻推荐-多路召回
  6. 转载《OpenGIS: Open Geodata Interoperation Specification》中文翻译
  7. git修改本地仓库和远程仓库名称
  8. 【BZOJ3144】[Hnoi2013]切糕 最小割
  9. 继承(初识继承,继承的进阶)
  10. paip.variable xxx has initializer but incomplete type 解决方案
  11. ai快捷键常用表_掌握这些AI常用快捷键和小技巧,提高速度
  12. 浅析MyBatis执行器原理
  13. Win 10 版NVIDIA GeForce GTX 1060显卡驱动的下载及飞桨(Paddle)的安装
  14. python红色的颜色表达式_python – 排序(十六进制)颜色以匹配彩虹
  15. 敏感字符的识别+处理
  16. IGV web 工具部署
  17. mysql中如何去除重复数据_mysql数据库如何去除重复数据
  18. cocos2d-x的初步学习二十之坦克大战七
  19. 中国通信学会开源技术委员会成立大会暨第一次全体委员会议顺利召开
  20. 华为无线设备Mesh配置命令

热门文章

  1. 【系统分析与设计】UML协作图绘制方法(真の能看懂~!)
  2. python【力扣LeetCode算法题库】66-加一
  3. 【Network Security!】密码攻击的原理和方法
  4. 珠海网络推广浅析网站优化面对搜索引擎算法更新怎样才能应对自如?
  5. 网站推广——seo优化对企业网站推广能力的提升有着不小的帮助
  6. 网络营销外包——网络营销外包公司表示网站更新仅仅是原创还不够
  7. 网站seo优化相关性需要了解哪三方面内容?
  8. 网站功能页面构建有何技巧?
  9. ros 消息队列与缓冲区_[ROS] [笔记(1)] 一个最简单的例子:Hello Robot(消息、发布者与订阅者)...
  10. 猜拳小程序c语言编程,无聊的时候写的猜拳小程序