POJ2689 Prime Distance
来源:互联网 发布:python 开发GIS 编辑:程序博客网 时间:2024/05/29 16:33
筛法
题目传送门
POJ维护后第一天啦啦啦
要筛
4e4+7比较小,一般的筛法就可以了。
代码:
#include<cstdio>#include<cstring>#include<algorithm>#define MAXN 1000000#define MAXM 100010#define MAX 80000#define INF 1e12using namespace std;typedef long long LL;LL l,r,p;LL prime[MAXN+5],pr[MAXN+5];bool f[MAXN+5];void Make(){ memset(f,true,sizeof(f)); for (LL i=2;i<=MAXM;i++){ if (f[i]) prime[++p]=i; for (LL j=1;j<=p&&prime[j]*i<=MAXM;j++){ f[prime[j]*i]=false; if (i%prime[j]==0) break; } }}int main(){ Make(); while (scanf("%lld%lld",&l,&r)==2){ memset(f,true,sizeof(f)); if (l<2) l=2; for (LL i=1;i<=p;i++){ LL k=l/prime[i]; if (l%prime[i]) k++; if (k==1) k++; for (LL j=prime[i]*k;j<=r;j+=prime[i]) if (j>=l) f[j-l+1]=false; } LL al=0,ar=0,il=0,ir=1e10,t=0; for (LL i=1;i<=r-l+1;i++) if (f[i]) pr[++t]=i+l-1; if (t<=1){ printf("There are no adjacent primes.\n"); continue; } for (LL i=1;i<t;i++){ if (pr[i+1]-pr[i]<ir-il){ il=pr[i]; ir=pr[i+1]; } if (pr[i+1]-pr[i]>ar-al){ al=pr[i]; ar=pr[i+1]; } } printf("%lld,%lld are closest, %lld,%lld are most distant.\n",il,ir,al,ar); } return 0;}
阅读全文
1 0
- POJ2689 Prime Distance
- poj2689 Prime Distance
- POJ2689 Prime Distance
- poj2689 Prime Distance
- 【数论】poj2689 Prime Distance
- POJ2689 Prime Distance
- poj2689 Prime Distance
- POJ2689 Prime distance 素数
- POJ2689 Prime Distance
- poj2689 Prime Distance
- POJ2689 Prime Distance 素数距离
- poj2689(Prime Distance两次筛)
- poj2689 Prime Distance 素数筛选应用 复习
- POJ2689:Prime Distance(大区间素数)
- Prime Distance(poj2689变形的筛法素数)
- 素数筛选(2次):poj2689 Prime Distance
- POJ2689——Prime Distance(大区间素数筛)
- poj2689 Prime Distance 有难度 埃拉托斯尼斯筛法的运用
- SQL的check不能用于mysql时的另一种处理
- Kotlin类和对象 (十三)--- 委托属性(Delegated Properties)
- ROS学习(一)ROS安装与创建工作空间
- java作业---接口
- Cookie和Session详解
- POJ2689 Prime Distance
- App分享 自定义页面
- 使用Python发送E-Mail (SMTP协议)
- JVM 【笔记】
- EBS项目线程设计原则
- 自适应 Simposion 积分
- JavaScript数组求和的几种方法
- Java中Session详解
- .NET C# Tostring() format 格式化字符串大全