📜  扩展欧几里得python(1)

📅  最后修改于: 2023-12-03 15:10:03.695000             🧑  作者: Mango

扩展欧几里得 Python

在计算机科学中,扩展欧几里得算法是一种用于计算两个整数 a, b 的最大公约数(GCD)及其线性组合(也称为 Bézout 系数)的算法。在 Python 语言中,我们可以使用以下函数来实现扩展欧几里得算法。

def extended_gcd(a, b):
    if a == 0:
        return (b, 0, 1)
    else:
        gcd, x, y = extended_gcd(b % a, a)
        return (gcd, y - (b//a) * x, x)

该函数接受两个整数 a 和 b 作为输入,并返回一个三元组 (gcd, x, y)。其中,gcd 是 a 和 b 的最大公约数,x 和 y 是 Bézout 系数,满足 gcd = ax + by。

以下是使用该函数计算 a = 54 和 b = 24 时的最大公约数和 Bézout 系数的示例:

>>> extended_gcd(54, 24)
(6, -1, 3)

因此,54 和 24 的最大公约数是 6,Bézout 系数为 x = -1,y = 3,满足 6 = 54*(-1) + 24*3。

该函数的时间复杂度为 O(log(min(a, b))),因此对于大整数的计算也有较好的效率。

以上是关于扩展欧几里得算法的简单介绍和 Python 实现,如果您需要在编写 Python 程序时计算最大公约数和 Bézout 系数,可以参考以上代码。