python验证素数 Miller-Rabin概率检测法菜鸟都能懂
Posted Afololer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python验证素数 Miller-Rabin概率检测法菜鸟都能懂相关的知识,希望对你有一定的参考价值。
前提条件
不解释,数学家的结晶
如果p为素数,在 1~p-1之中,只有1和p-1的平方mod p等于1
证明如下
-1 mod p 可以看作是 p-1 mod p
python代码
`def tobinary(a):
d = []
c = a
while(c!=0):
b = c % 2
c = int(c/2)
d.append(b)
return d``
def ml(n):
for i in range(5): #随机五次
f = tobinary(n - 1) #n-1转化为二进制
c = 0
d = 1
a = random.randint(2,n//2)
while(c!=n-1):
c = 2*c
x = d
d = (d*d)%n
if d == 1: #二次探测定理
if x != 1 and x != n - 1:
return False
g = f.pop()
if(g ==1):
c=c+1
d=(d*a)%n
if d!=1: #费尔玛定理
return False
return True
以上是关于python验证素数 Miller-Rabin概率检测法菜鸟都能懂的主要内容,如果未能解决你的问题,请参考以下文章