poj 2689Prime Distance
来源:互联网 发布:淘宝刷单平台源码 编辑:程序博客网 时间:2024/06/06 01:35
题目链接:点击打开链接;
题意:在l和u之间找到相邻的素数差最大和最小的打印出来。没有输出There are no adjacent primes.
分析:本题数据很大,所以int不能存下,所以用long long,此外,正常的素数筛法不能筛出这么的素数。然而我观察到l和u之间距离为1000000,所以只需要筛出l和u之间的素数就好了,并且,在小于2147483647的所有的数为素数和sqrt(2,147,483,647)中的素数的倍数。所以先筛出sqrt(2,147,483,647)这些素数,再用这些素数筛出l和u之间的素数
注意:不要打错和少打字符。
#include <set>#include <map>#include <stack>#include <queue>#include <math.h>#include <vector>#include <utility>#include <string>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>#include <functional>using namespace std;const int N=50005;bool isprime[N*20];long long prime_1[N];long long prime_2[N];long long l,u;int prime_num=0;void prime1(){ memset(isprime,1,sizeof(isprime)); isprime[1]=isprime[0]=false; for(int i=2;i<N;i++){ if(isprime[i]) prime_1[prime_num++]=i; for(int j=0;j<prime_num&&i*prime_1[j]<N;j++){ isprime[i*prime_1[j]]=false; if(!(i*prime_1[j]))break; } }}// 线性筛法int prime_num_2;void prime2(){ long long i,j,b; memset(isprime,1,sizeof(isprime)); for(i=0;i<prime_num;i++){ b=l/prime_1[i]; while(b*prime_1[i]<l||b<=1) b++; for(j=b*prime_1[i];j<=u;j+=prime_1[i]){ if(j>=l){ isprime[j-l]=false; } } if(l==1){ isprime[0]=false; } }}//普通筛法int main(){ prime1(); while(cin>>l>>u){ prime2(); prime_num_2=0; for(int i=0;i<=u-l;i++){ if(isprime[i]){ prime_2[prime_num_2]=i+l; prime_num_2++; } } if(prime_num_2<=1){ puts("There are no adjacent primes."); continue; } long long minn,maxx,minn_x,minn_y,maxx_x,maxx_y; maxx=-99999999999ll; minn=99999999999ll; for(int i=1;i<prime_num_2;i++){// cout<<prime_2[i]<<endl; long long sum=prime_2[i]-prime_2[i-1]; if(sum>maxx){ maxx=sum; maxx_x=prime_2[i-1]; maxx_y=prime_2[i]; } if(sum<minn){ minn=sum; minn_x=prime_2[i-1]; minn_y=prime_2[i]; } } printf("%I64d,%I64d are closest, %I64d,%I64d are most distant.\n",minn_x,minn_y,maxx_x,maxx_y);//这个地方我就错两会,没带‘,’; }}
0 0
- poj 2689 Prime Distance
- POJ 2689 Prime Distance
- POJ 2689 Prime Distance
- poj 2689 Prime Distance
- POJ 2689 Prime Distance
- poj 2689 Prime Distance
- POJ 2689 Prime Distance
- POJ 2689 Prime Distance
- poj 2689 Prime Distance
- poj 2689 Prime Distance
- [POJ 2689] Prime Distance
- POJ 2689 Prime Distance
- poj 2689Prime Distance
- poj 2689 Prime Distance
- POJ 2689 Prime Distance
- POJ 2689 Prime Distance
- poj 2689 Prime Distance
- POJ 2689 Prime Distance
- 从机器学习谈起
- NSURLSession学习
- C# 委托和事件
- poj1782(Run Length Encoding)
- 几种常见操作导致的Activity生命流程的变化
- poj 2689Prime Distance
- kafka 0.9 broker 参数
- 1.1 NAS简介
- angularJS结构分析(转)
- 蓝桥杯---2012--比酒量(暴力)
- POJ-2142-The Balance(扩展欧几里得)
- Java - eclipse 使用日记
- HDU 2602 Bone Collector
- OptiX WDM 系统常用指标测试