poj_2689_Prime Distance
2018-06-17 21:32:05来源:未知 阅读 ()
Your program is given 2 numbers: L and U (1<=L< U<=2,147,483,647), and you are to find the two adjacent primes C1 and C2 (L<=C1< C2<=U) that are closest (i.e. C2-C1 is the minimum). If there are other pairs that are the same distance apart, use the first pair. You are also to find the two adjacent primes D1 and D2 (L<=D1< D2<=U) where D1 and D2 are as distant from each other as possible (again choosing the first pair if there is a tie).
Input
Output
Sample Input
2 17 14 17
Sample Output
2,3 are closest, 7,11 are most distant. There are no adjacent primes.
主要思想是偏移数组,区间素数打表。
#include<iostream> #include<cstdio> #include<cstring> #include<queue> typedef long long LL; #include<algorithm> using namespace std; #define N 1000010 int notprime[N]; int prime[N]; int prime2[N]; bool vis[N]; bool val[N]; int pn=0; void getPrime() { memset(prime,0,sizeof(prime)); for(int i=2;i<=N;i++) { if(!prime[i])prime[++prime[0]]=i; for(int j=1;j<=prime[0]&&prime[j]<=N/i;j++) { prime[prime[j]*i]=1; if(i%prime[j]==0)break; } } } void getPrime2(int L,int R) { memset(notprime,false,sizeof(notprime)); if(L<2)L=2; for(int i=1;i<=prime[0]&&(long long)prime[i]*prime[i]<=R;i++) { int s=L/prime[i]+(L%prime[i]>0); if(s==1)s=2; for(int j=s;(long long)j*prime[i]<=R;j++) if((long long)j*prime[i]>=L) notprime[j*prime[i]-L]=true; } prime2[0]=0; for(int i=0;i<=R-L;i++) if(!notprime[i]) prime2[++prime2[0]]=i+L; } int main() { getPrime(); LL m,t,h; int l,r; while(~scanf("%d%d",&l,&r)) { int sh1=0,sh2=1000000,lo1=0,lo2=0; getPrime2(l,r); if(prime2[0]<2) { puts("There are no adjacent primes."); continue; } for(int i=1;i<prime2[0];i++) { if(sh2-sh1>prime2[i+1]-prime2[i]) { sh1=prime2[i]; sh2=prime2[i+1]; } if(lo2-lo1<prime2[i+1]-prime2[i]) { lo1=prime2[i]; lo2=prime2[i+1]; } } printf("%d,%d are closest, %d,%d are most distant.\n",sh1,sh2,lo1,lo2); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- POJ-3278 2020-04-01
- C++ Primer抄书笔记(二)——变量和基本类型(下) 2020-02-25
- C++ Primer 抄书笔记(二)——变量和基本类型(上) 2020-02-24
- C++ Primer 抄书笔记(一) 2020-02-20
- Asteroids!_poj2225 2020-02-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash