prime
来源:互联网 发布:java 密码 正则表达式 编辑:程序博客网 时间:2024/04/30 15:48
#include<iostream>#include<string.h>using namespace std;const int MAX=10000000;bool visit[MAX];int prime[670000];int num=0;void getprime(){ memset(visit,true,sizeof(visit)); visit[1]=false; long long int i,j; for(i=2;i<=MAX;i++) if(visit[i]) { num++; prime[num]=i; for(j=i*i;j<=MAX;j+=i) visit[j]=false; }}int main(){ getprime(); cout<<num;}
线性筛,还有注意区间。poj2689
#include<stdio.h>#include<string.h>const int n=50000;int prime[n],num=0;bool p[1000100];bool visit[n];void getprime(){ memset(visit,true,sizeof(visit)); int i,j; for(i=2;i<=n;i++) { if(visit[i]) prime[num++]=i; for(j=0;j<num;j++) { if(i*prime[j]>n) break; visit[i*prime[j]]=false; if(i%prime[j]==0) break; } }}int main(){ getprime(); int r,l,i,j,s,t,d; while(scanf("%d%d",&l,&r)!=EOF) { memset(p,true,sizeof(p)); if(l==1) l++; for(i=0;i<num;i++) { s=(l-1)/prime[i]+1; t=r/prime[i]; for(j=s;j<=t;j++) if(j>1) p[j*prime[i]-l]=false; } int mina=0,minb=0x7fffffff,maxa=0,maxb=0; for(i=0;i<=r-l;i++) if(p[i]) { d=i; break; } for(i=d+1;i<=r-l;i++) if(p[i]) { if(i-d>maxb-maxa) { maxb=i; maxa=d; } if(i-d<minb-mina) { minb=i; mina=d; } d=i; } mina+=l; minb+=l; maxa+=l; maxb+=l; if(maxb!=l) printf("%d,%d are closest, %d,%d are most distant.\n",mina,minb,maxa,maxb); else printf("There are no adjacent primes.\n"); }}
0 0
- Prime
- prime
- Prime
- prime
- Prime
- prime
- prime
- PRIME
- prime
- Prime
- class Prime
- prime cuts
- Prime Palindromes
- 1056 Prime
- Prime Palindromes
- C++prime
- Prime Number
- Prime Cryptarithm
- 在Ubuntu 14.04 LTS上安装redmine 3.2.0
- 第1章 jQuery简介
- 关于windows激活的问题
- 蓝桥杯--关于暴力枚举
- [leetcode Q58] Length of Last Word
- prime
- LintCode:Majority Number / Majority Number II / Majority Number III
- 带checkbox的ListView实现——自定义Checkable控件的实现方法
- TCP协议中的三次握手和四次挥手
- extjs5学习之 Model日期转换
- Java基础学习《第十章 内部类》
- 如何获取app 崩溃信息
- QT 给.exe文件添加图标
- Logstash+Redis+Elasticsearch+Kibana+Nginx搭建日志分析系统