前言:
此文用于记录学习过程中常用到的函数(较高效的算法)。同时,对函数的原理进行描述,对于相关的更为细致的描述,可以参考文中的参考,写的很好,值得多看。
求最大公因子
1.迭代:
# 欧几里得算法求两个数字的最大公约数
# 迭代:
def gcd(a, b):
while b != 0:
tem = a % b
a = b
b = tem
return a
2.递归:
# 欧几里得算法求两个数字的最大公约数
# 递归:
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
扩展欧几里的算法(求逆元)
1.迭代:
# 扩展欧几里的算法
def extendedGCD(a, b):
#a*xi + b*yi = ri
if b == 0:
return (1, 0, a)
#a*x1 + b*y1 = a
x1 = 1
y1 = 0
#a*x2 + b*y2 = b
x2 = 0
y2 = 1
while b != 0:
q = a // b
#ri = r(i-2) % r(i-1)