梅森素数
来源:互联网 发布:vmware网络nat 编辑:程序博客网 时间:2024/04/27 20:13
梅森素数是指形如2^p-1的正整数,其中指数p是素数,常记为Mp 。若Mp是素数,则称为梅森素数。p=2,3,5,7时,Mp都是素数,但M11=2047=23×89不是素数
梅森数可能是素数也可能是合数,因此如何对梅森数进行判断是一个很关键的问题
根据费马定理 如果n是素数,有 a^(n-1) = 1 ( mod n) 1 <= a <= n-1;
一个数可能通过Miller测试,但他可能不是素数,庆幸的是,这样的数并不多,一个素数可以通过所有以a为基的Miller测试,而对于一个奇合数,通过以a为基的Miller测试的概率小于等于1/4,如果一个奇合数做N次独立的Miller测试,每次都通过的概率小于(1/4)^n,如果n = 100,那(1/4)^100 = 6.22 * 10 ^(-61),这是一个很小的数,测试出错的概率很小。
Miller测试的步骤
1.用随机数选择M个a。
2.判断a^(n-1)次方模n是否为1,若为1则为素数,若不为1,则不是素数。a^(n-1)次方模n可以快速取模完成
const int Maxcnt = 32;int64 random(int64 m){ return (int64)(rand()%m);}int64 Mul(int64 a,int64 b,int64 m){ int64 sum = 1; while(b > 0) { if(b%2 == 1) sum = MUL(sum,a,m); b = b / 2; a = MUL(a,a,m); } return sum;}bool Miller(int64 m){ for(int i = 0; i <= Maxcnt; i++) { int64 a = random(m-1)+1; if(Mul(a,m-1,m) != 1) return false; } return true;}
- 素数个数&梅森素数
- 5.4趣味素数之梅森素数
- 梅森素数与孪生素数
- 求解孪生素数--梅森素数
- 梅森素数表
- 梅森素数表
- 梅森素数
- 梅森素数
- 梅森素数(nefu120)
- NEFU 梅森素数
- 梅森素数
- 梅森素数
- 梅森素数
- 梅森素数汇总
- 梅森素数
- 蓝桥杯:梅森素数
- 梅森素数的证明
- 梅森素数计算程序
- Django 生成PDF(二)
- 我的小站。
- 数据库设计原则
- 利用HOG特征进行人体检测
- 从网络加载的小程序
- 梅森素数
- Largest Rectangle in Histogram
- 面试:数据类型转换
- 设计模式之State
- HDU-1221 HDU Today 裸最短路 + STL
- N皇后问题
- 猜数字游戏(c语言)
- Web开发——服务器端应用技术简单比较
- VTY访问权限配置