高清免费素材网站/磁力链bt磁力天堂
Python求最大公约数:几种实现方式全解析
在编写 Python 程序中,经常需要求取两个或多个数的最大公约数。求最大公约数是一道基础算法题,也是许多高级算法的基础。Python 作为一门通用编程语言,提供了多种求最大公约数的实现方式。本文将介绍几种 Python 求最大公约数的方法,包括辗转相除法、更相减损法、欧几里得算法(辗转相减法)、Euclid 扩展算法等。
辗转相除法
辗转相除法又称为欧几里得算法(Euclidean Algorithm)。该算法基于一个定理:两个整数的最大公约数等于其中较小的数与两数相除余数的最大公约数。用公式表达为:gcd(a, b) = gcd(b, a mod b)
例如,求取 60 和 24 的最大公约数:
gcd(60, 24) = gcd(24, 12) = gcd(12, 0) = 12
代码实现:
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
更相减损法
更相减损法是古代中国数学家采用的一种求最大公约数的方法。该算法基于一个结论:两个正整数的最大公约数等于它们的差值的最大公约数。用公式表达为:gcd(a, b) = gcd(|a-b|, min(a,b))
例如,求取 60 和 24 的最大公约数:
gcd(60,24) = gcd(60-24, 24) = gcd(36, 24)
gcd(36,24) = gcd(36-24, 24) = gcd(12, 24)
gcd(12,24) = gcd(24-12, 12) = gcd(12, 12)