📅  最后修改于: 2023-12-03 15:04:39.908000             🧑  作者: Mango
在数学中,最大公约数(Greatest Common Divisor,简称GCD)指两个或多个整数共有约数中最大的一个。例如,12和18的最大公约数是6,记作GCD(12,18)=6。
在Python中,求两个数的最大公约数可以使用辗转相除法(又称欧几里得算法)。
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
assert gcd(12, 18) == 6
assert gcd(4,6) == 2
以上代码中的gcd函数实现了求两个数的最大公约数。当输入参数b为0时,则a为最大公约数;否则继续递归调用gcd函数,其中目标参数a变为原参数b,目标参数b变为原参数a%b,即a除以b的余数。
对于两个数进行求最大公约数的时候,辗转相除法的时间复杂度大致为O(log(min(a,b))),其中a、b分别为两个数,最终的时间复杂度与两个数的大小关系有关,但由于O符号的常数为1,因此可以认为时间复杂度近似于log级别的。
以上就是Python中求两个数最大公约数的实现方法,辗转相除法算法简单易理解,并且在时间复杂度上表现较好,适合用于解决较小规模的问题。