该算法之前密码学课上也学过,就是辗转相除法:
基本原理
1.假设两个数a,b(a>b)
2.a除以b 得到商q和余数r
3.a = b,b=q 重复2直到r=0此时b即最大公约数
- 48 ÷ 18 = 2 余 12
- 18 ÷ 12 = 1 余 6
- 12 ÷ 6 = 2 余 0
其时间复杂度是 O(log min(a, b))
def find_gcd(a,b)
while b:
a,b = b,a%b
return a
该算法之前密码学课上也学过,就是辗转相除法:
基本原理
1.假设两个数a,b(a>b)
2.a除以b 得到商q和余数r
3.a = b,b=q 重复2直到r=0此时b即最大公约数
其时间复杂度是 O(log min(a, b))
def find_gcd(a,b)
while b:
a,b = b,a%b
return a