POJ 2689 数论
来源:互联网 发布:八爪鱼采集微信数据 编辑:程序博客网 时间:2024/05/10 22:30
刚做素数部分,把以前不懂的题目搞定了。还不错。
#include<iostream>#define N 50001using namespace std;bool f[N],seg[1111111];int prime[N],pcnt;__int64 rec[1111111];void deal( __int64 L,__int64 U ){ memset( seg,true,sizeof(seg) ); for( int i=1;i<=pcnt;i++ ) { __int64 j=L/prime[i]; while( j*prime[i]<L||j<=1 ) j++; for( j=j*prime[i];j<=U;j+=prime[i] ) if( j>=L ) seg[j-L]=false; } if( L==1 ) seg[0]=false;}int main(){ memset( f,true,sizeof(f) ); pcnt=0; for( int i=2;i<N;i++ ) if( f[i] ) { prime[++pcnt]=i; for( int j=i+i;j<N;j+=i ) f[j]=false;} __int64 L,U;int recnt; while( scanf("%I64d %I64d",&L,&U)!=EOF ) { deal(L,U); recnt=0; for( int i=0;i<=U-L;i++ ) if( seg[i] ) rec[recnt++]=i; if( recnt<=1 ) { printf( "There are no adjacent primes.\n" ); continue; } __int64 maxD,minD,maxL,minL; maxD=0;minD=1111111; for( int i=1;i<recnt;i++ ) { if( rec[i]-rec[i-1]>maxD ) { maxD=rec[i]-rec[i-1]; maxL=i; } if( rec[i]-rec[i-1]<minD ) { minD=rec[i]-rec[i-1]; minL=i; } } printf( "%I64d,%I64d are closest, %I64d,%I64d are most distant.\n",rec[minL-1]+L,rec[minL]+L,rec[maxL-1]+L,rec[maxL]+L ); } return 0;}
- POJ 2689 数论
- POJ 2689 数论
- [数论] POJ 2689 Prime Distance 二次筛选
- poj 2689 Prime Distance 【数论】【筛法求素数】
- POJ 1411 数论+优化
- POJ 2429 数论
- POJ 2480 Longge 数论
- POJ 3090简单数论
- POJ 数论列表
- POJ 1845 数论
- POJ 3358 数论
- poj 1150 数论
- poj 1019 数论
- poj 2115(数论)
- POJ--1006--Biorhythms【数论】
- POJ 3292 数论
- POJ【数论/组合/博弈论】
- POJ【1909】数论
- extjs2.2.1 grid panel 滚动条不显示的原因
- JAVA面试题解惑系列(五)——传了值还是传了引用?
- 中国IC设计公司2006年
- 引用之函数返回值 函数的返回值为引用类型《三》
- JAVA面试题解惑系列(六)——字符串(String)杂谈
- POJ 2689 数论
- WebKit DOM Event (二)
- JAVA面试题解惑系列(七)——日期和时间的处理
- 青涩的思绪 泛起粉色的涟漪
- 二分查找
- JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
- 截断表分区导致的等待enq: RO - fast object reuse
- 设置组件圆角
- JAVA面试题解惑系列(九)——继承、多态、重载和重写