素数筛选之“普通筛选”和“线性筛选”
来源:互联网 发布:制作直方图用什么软件 编辑:程序博客网 时间:2024/06/08 15:51
作为一个入门者。。。最熟悉的只有素数筛选了。最先掌握的是普通筛选法,然后通过不判断偶数增加了普通筛选法的效率。今天接触了线性筛选法,虽然不是完全明白其中道理,但是相比普通筛选法还是有了(只有)速度的提升。
下面贴代码:
普通筛选法(去掉偶数的判定)
#include <iostream>#include <cmath>#include <windows.h>#define MAX 100000000 //prime in [0,10000 0000]using namespace std;long primeNumber[6000000]={2},n=1; //about 6m prime number in [0,10000 0000]int main(){ static bool prime[MAX/2]; //all value is false(0) const bool IS=false,NOT=true; cout<<"start find prime number in [0,"<<MAX<<"]..."<<endl; double begin=GetTickCount(); for(long i=0;i*2+3<=MAX;i++){if(IS==prime[i]){ primeNumber[n++]=i*2+3;for(long j=3;j*(i*2+3)<=MAX;j+=2){prime[((j*(i*2+3))-3)/2]=NOT;}}} double end=GetTickCount(); cout<<"runing time: "<<end-begin<<"ms"<<endl; cout<<endl<<"find "<<n<<" prime numbers in [0,"<<MAX<<"]"<<endl; cout<<"memeory use: "<<(sizeof prime +sizeof primeNumber)/1000000<<" MB"<<endl; cout<<"the last 10 prime numbers is"<<endl; for(int i=n-1;;i--) { if(n-i>10) break; else cout<<primeNumber[i]<<endl; }}
线性筛选法:
#include <iostream>#include <cmath>#include <windows.h>#define MAX 100000000 //prime in [0,10000 0000]using namespace std;long primeNumber[6000000],n=0; //about 6m prime number in [0,10000 0000]int main(){ static bool prime[MAX]; //all value is false(0) const bool IS=false,NOT=true; cout<<"start find prime number in [0,"<<MAX<<"]..."<<endl; double begin=GetTickCount(); for(long i=2;i<MAX;i++){if(IS==prime[i]){ primeNumber[n++]=i;}for(long j=0;j<n&&primeNumber[j]*i<MAX;j++){ prime[primeNumber[j]*i]=NOT;if(i%primeNumber[j]==0) break;}} double end=GetTickCount(); cout<<"runing time: "<<end-begin<<"ms"<<endl; cout<<endl<<"find "<<n<<" prime numbers in [0,"<<MAX<<"]"<<endl; cout<<"memeory use: "<<(sizeof prime +sizeof primeNumber)/1000000<<" MB"<<endl; cout<<"the last 10 prime numbers is"<<endl; for(long i=n-1;;i--) { if(n-i>10) break; else cout<<primeNumber[i]<<endl; }}
运行效果:
0 0
- 素数筛选之“普通筛选”和“线性筛选”
- 素数筛选法(普通筛和线性筛)
- 线性筛选素数和线性筛选欧拉函数【bzoj2190]
- 线性筛选素数模板
- 素数线性筛选
- 素数的线性筛选
- 线性筛选素数法
- 线性筛选素数
- 素数线性筛选法
- 素数线性筛选
- 线性筛选求素数
- 线性筛选求素数
- 【线筛】线性筛选素数
- 线性筛选素数--python
- 线性筛选素数(欧拉筛选)
- 线性求欧拉函数值和筛选素数
- 线性筛选素数。。。。线性哦
- 求素数(普通+筛选)
- Android开发笔记
- COCOS2DX APK客户端进入后台后自动断开,SOCKET连接的时间是230秒
- 沃通CA致力在线支付安全,受邀参加第九届中国支付业国际峰会
- oracle 10g中的几个概念(sid/db_name/server_name)
- 裸机串口操作
- 素数筛选之“普通筛选”和“线性筛选”
- Latex标题左对齐
- 用SQLyog和NativeSQL将数据从sqlserver导入到mysql
- irrlicht 3d rpg demo 源码发布
- 在linux中添加ftp用户,以及修改FTP默认端口号
- 互联网产品诸葛教你如何留住消费者?
- 织梦dede自定义内容分页,datalist运用实例
- java中抽象类跟接口的区别和总结
- iOS下拉刷新上拉加载更多EGOTableViewPullRefresh类库