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

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

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;}

转载地址:http://cgnva.baihongyu.com/

你可能感兴趣的文章
[arm驱动]linux设备地址映射到用户空间
查看>>
弗洛伊德算法
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
精度 Precision
查看>>
Android——4.2 - 3G移植之路之 APN (五)
查看>>
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>