欧几里德算法(Euclidean algorithm)(辗转相除法)
欧几里德算法又称辗转相除法,主要是用于计算两个整数a,b的最大公约数。
简单点说一下算法原理:两个整数的最大公约数等于其中小的那个数跟大除以小余数的最大公约数。
即: gcd(a,b)=gcd(b,a mod b) 。
举个简单的例子:
比如求 10跟 24 的最大公约数:
a = gcd(10, 24):
1. 求10和24的最大公约数等于求10和4的最大公约数 :
a = gcd(10, 24) = gcd(10, 4)
2. 求10跟4的最大公约数等于求4跟2的最大公约数,为2 :
a = gcd(10, 24) = gcd(10, 4)
= gcd(4, 2) = 2
# pythondef gcd(a, b): return a if b == 0 else gcd(b, a % b)print(gcd(10,24)) # 2
拓展欧几里德算法
算法原理:若a和b为正整数,则存在整数x, y 使得gcd(a,b)=ax+by;
通俗点说就是 gcd(a,b)可以表示为a,b的整数线性组合。
举个简单的例子:
gcd(10, 24) = 2
2 = 10*(-7) + 24*3
主要应用有以下三方面: