POJ 2689 Prime Distance [素数筛+想法]
来源:互联网 发布:c语言浮点数表示方法 编辑:程序博客网 时间:2024/05/18 20:47
题意:给出[L,R]的区间,问这个区间内相邻素数的最大距离和最小距离
题解:小于2147483647的素数用到的小素数,只有sqrt(2147483,647)个,我们只要枚举这些素数,筛掉合数就可以得到这个区间的所有素数。
AC代码:
#include<stdio.h>#include<string.h>#include<iostream>#define N 1000005using namespace std;bool f[N];int b[N],top;bool ff[N];int main(){memset(f,true,sizeof(f));f[0]=f[1]=false;for(int i=2;i<N;i++){if(f[i]){b[top++]=i;for(int j=2;i*j<N;j++)f[j*i]=false;}}int l,r;while(~scanf("%d%d",&l,&r)){memset(ff,true,sizeof(ff));for(int i=0;i<top;i++)for(int j=l/b[i];j<=r/b[i];j++)if(j*b[i]>=l&&j*b[i]<=r&&j!=1)ff[j*b[i]-l]=false;int last=0;while((l+last<N&&!f[l+last])||(!ff[last]&&last<=r-l))last++;int ma=0,mi=10000000;int ma1=-1,ma2=-1,mi1=-1,mi2=-1;for(int i=last+1;i<=r-l;i++){if(ff[i]){if(l+i<N)if(!f[l+i])continue;int len=i-last;if(ma<len){ma1=last;ma2=i;ma=len;}if(mi>len){mi1=last;mi2=i;mi=len;}last=i;}}if(ma1==-1)printf("There are no adjacent primes.\n");else printf("%d,%d are closest, %d,%d are most distant.\n",mi1+l,mi2+l,ma1+l,ma2+l);}}
阅读全文
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 2689 Prime Distance(大区间筛素数)
- !POJ 2689 Prime Distance-卡时间-(素数筛法)
- poj 2689 Prime Distance 筛素数加强版
- POJ 2689 Prime Distance (二次?筛素数)
- poj 2689 Prime Distance 筛法/二次筛法/区间素数
- POJ-2689 Prime Distance(两次素数筛+偏移处理)
- MOOC清华《面向对象程序设计》第4章:继承基类构造函数实验
- spring boot解决thymeleaf标签未关闭错误
- 剑指Offer—36—两个链表的第一个公共节点
- HR 模态登陆总结
- 【无用】随笔—算是,自辨?吧
- POJ 2689 Prime Distance [素数筛+想法]
- 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
- 【BZOJ】2818 Gcd 欧拉函数
- HDU2255 奔小康赚大钱 —— KM算法(二分图最大权匹配)
- tensorflow日常小记---tensorboard曲线显示不全
- C++中指针和引用的区别
- #22
- GET和POST区别及缓存问题
- 作用域安全的构造函数