Python求最大公约数:几种实现方式全解析
在编写 Python 程序中,经常需要求取两个或多个数的最大公约数。求最大公约数是一道基础算法题,也是许多高级算法的基础。Python 作为一门通用编程语言,提供了多种求最大公约数的实现方式。本文将介绍几种 Python 求最大公约数的方法,包括辗转相除法、更相减损法、欧几里得算法(辗转相减法)、Euclid 扩展算法等。
辗转相除法
辗转相除法又称为欧几里得算法(Euclidean Algorithm)。该算法基于一个定理:两个整数的最大公约数等于其中较小的数与两数相除余数的最大公约数。用公式表达为:gcd(a, b) = gcd(b, a mod b)
例如,求取 60 和 24 的最大公约数:文章来源:https://www.toymoban.com/news/detail-460506.html
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)文章来源地址https://www.toymoban.com/news/detail-460506.html
到了这里,关于Python求最大公约数:几种实现方式全解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!