费马素性检验:
给定奇整数n>=3和安全参数t
1、随机选取整数b,(b,n)=1,2<=b<=n-2
2、计算r=b的n-1次方(modn)
3、如果r!=1,则n是合数
4、上述过程重复t次
以下是python代码,如发现错误,请跟博主联系
import random #n>=3且n是奇整数 n=int(input()) t=int(input()) def gcd(a,b): while b != 0: a, b = b, a % b return a def b():#找到b a=random.randint(2,n-2) if gcd(a,n)==1: return a else: return b() def fast_mod(x, n, m):#模重复平方法 a = 1 b = x while True: temp = n if n % 2 == 1: a = a * b % m b = b * b % m n = n // 2 if temp < 1: return a def fermat(): r = fast_mod(b(), n - 1, n) if r!=1: print('n是合数') else: for x in range(t): r=fast_mod(b(),n-1,n) if r!=1: print('n是合数') return a=1-1/2**t print('n是素数的可能性大于%.2f'%a) fermat()
标签:return,素性,python,fast,print,mod,def,费马 From: https://www.cnblogs.com/cs0513/p/18057670