博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 3518 Prime Gap(素数)
阅读量:5172 次
发布时间:2019-06-13

本文共 966 字,大约阅读时间需要 3 分钟。

POJ 3518 Prime Gap(素数)

id=3518

题意:

       给你一个数。假设该数是素数就输出0. 否则输出比这个数大的素数与比这个数小的素数的差值。

分析:

       明显本题先要用筛选法求出130W(严格的话应该是求第100001个素数)以内的全部素数。

       然后推断给的数是否是素数就可以。

       假设不是素数。那么就找出它在素数素组内的上界和下界,输出两个素数的差值就可以。

       筛选法求素数可见:

      

AC代码:

#include
#include
#include
using namespace std;const int maxn=1300000;int prime[maxn+5];int get_prime(){ memset(prime,0,sizeof(prime)); for(int i=2;i<=maxn;i++) { if(!prime[i]) prime[++prime[0]]=i; for(int j=1;j<=prime[0]&&prime[j]<=maxn/i;j++) { prime[prime[j]*i]=1; if(i%prime[j]==0)break; } } return prime[0];}int main(){ //生成maxn内的全部素数 get_prime(); int x; while(scanf("%d",&x)==1 && x) { int bound=lower_bound(prime+1,prime+prime[0]+1,x)-prime; if(prime[bound]==x) printf("0\n"); else printf("%d\n",prime[bound]-prime[bound-1]); } return 0;}

转载于:https://www.cnblogs.com/brucemengbm/p/6807298.html

你可能感兴趣的文章
【转】十步让你成为一名优秀的Web开发人员
查看>>
cnn神经网络入门
查看>>
HDU 4502
查看>>
Working with Protocols
查看>>
在ArcGIS空间数据库中增加点数据的方法
查看>>
三、从网线到网络设备
查看>>
div footer标签css实现位于页面底部固定
查看>>
设计模式C++学习笔记之十三(Decorator装饰模式)
查看>>
struts2 <s:property/>标签的使用--输出时间格式转换
查看>>
html 3
查看>>
类的生命周期
查看>>
java 为什么说有前途 ?
查看>>
下载远程文件
查看>>
jQuery两把利器
查看>>
汇编设计 实验5
查看>>
linux常见命令2
查看>>
如何把TOMCAT启动加到WIN的服务中
查看>>
Kotlin怎样使用Android的Dagger2
查看>>
十进制转换十六进制
查看>>
修改jupyter notebook的默认浏览器
查看>>