2018-03-12 17:22:48
米勒-拉宾素性检验是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数。卡内基梅隆大学的计算机系教授Gary Lee Miller首先提出了基于广义黎曼猜想的确定性算法,由于广义黎曼猜想并没有被证明,其后由以色列耶路撒冷希伯来大学的Michael O. Rabin教授作出修改,提出了不依赖于该假设的随机化算法。
问题描述:对于大整数N,判断其是否为素数。
问题求解:
若N为偶数,直接返回false,若N是奇数,则进行以下几步进行判断:
- 将N - 1分解为 2 ^ s * d 的形式,得到s 和 d的值;
- 从[1, N - 1]中随机挑选a,作为基底;
- 对每个 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加以判断。
举个例子:
证明: