快速筛选法求素数表
来源:互联网 发布:windows不能重置此电脑 编辑:程序博客网 时间:2024/06/16 01:29
文中的算法依据本博客中《高效判断素数方法》中的规律和结论。
素数出现规律:
当n≧5时,如果n为素数,那么n mod 6 = 1 或 n mod 6 = 5,即n一定出现在6x(x≥1)两侧。
证明:
当x≥1时,有如下表示方法:
┈┈ 6x,6x+1,6x+2,6x+3,6x+4,6x+5,6(x+1),6(x+1)+1┈┈
不在6x两侧的数为6x+2,6x+3,6x+4,即2(3x+1),3(2x+1),2(3x+2),它们一定不是素数,所以素数一定出现在6x的两侧。
而普通的筛选素数的方法将所有的数都进行了判断,如下面代码:
for(i = 2; i*i <= N; i++){if(!notPrime[i]){for(j = i*i; j <= N; j += i){notPrime[j] = true;}}}
可以根据下面这个结论:
若x≧1且n=6x-1或n=6x+1不是素数,那么n一定不是2和3的倍数。
证明:
∵n=6x-1或n=6x+1,即n=2(3x)-1或n=2(3x)+1或n=3(2x)-1或n=3(2x)+1。
∴n一定不是2和3的倍数。
将筛选法进行改进,只判断6x两侧的数。
#define N 100000000bool notPrime[N+5];void ScreeningPrime(void){int i, j, increment[6] = {0, 4, 0, 0, 0, 2};for (i = 5; i*i <= N; i += increment[i%6]){for (j = i; i*j <= N; j += increment[j%6]){notPrime[i*j] = true;}}}
- 快速筛选法求素数表
- 筛选法--快速求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数/
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- 筛选法求素数
- H264 DPB管理
- 【Coding】Stack around the variable was corrupted 解决方案
- 9--26 验证控件
- uml
- 百度更新排名算法后,新网站一个月关键词是这样做到第一
- 快速筛选法求素数表
- (droid分享)新浪微博开发系列【七】之查看我的好友和粉丝
- Java断点续传服务器代码
- startActivityForResult与onActivityResult
- 使用GridView和ImageView组件实现图片显示
- GridView显示图片和文字(一)
- 算法之美——八皇后
- 如何判断单链表中是否有环
- wtl对话框中嵌入ie控件