Miller_Rabin(米勒拉宾)素数测试

Posted hyserendipity

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Miller_Rabin(米勒拉宾)素数测试相关的知识,希望对你有一定的参考价值。

2018-03-12 17:22:48

米勒-拉宾素性检验是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数。卡内基梅隆大学的计算机系教授Gary Lee Miller首先提出了基于广义黎曼猜想的确定性算法,由于广义黎曼猜想并没有被证明,其后由以色列耶路撒冷希伯来大学的Michael O. Rabin教授作出修改,提出了不依赖于该假设的随机化算法

问题描述:对于大整数N,判断其是否为素数。

问题求解:

若N为偶数,直接返回false,若N是奇数,则进行以下几步进行判断:

  1. 将N - 1分解为 2 ^ s * d 的形式,得到s 和 d的值;
  2. 从[1, N - 1]中随机挑选a,作为基底;
  3. 对每个 r in [0, s - 1],if ( a ^ d mod N != 1 && a ^{d * (2 ^ r)} mod N != -1) return N 是合数; else N有3/4的概率是素数,可以继续另选a加以判断。

举个例子:

证明:

 

以上是关于Miller_Rabin(米勒拉宾)素数测试的主要内容,如果未能解决你的问题,请参考以下文章

算法笔记--米勒-罗宾素数测试

求pascal判断素数的米勒拉宾算法

2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B. Goldbach-米勒拉宾素数判定(大素数)

HDU 2138 How many prime numbers (判素数,米勒拉宾算法)

HDU2138 & 米勒拉宾模板

SPOJ PON - Prime or Not