Skip to main content
 首页 » 编程设计

python之无法理解 "def gcd()"的代码

2025年05月04日14insus

更新:一旦我不知道3 %4 =0 ...

def gcd(a, b): 
    """Calculate the Greatest Common Divisor of a and b. 
 
    Unless b==0, the result will have the same sign as b (so that when 
    b is divided by it, the result comes out positive). 
    """ 
    while b: 
        a, b = b, a%b 
    return a 

我认为它是这样工作的:

gcd(3,4) => while 4: => 3,4 = 4, 3%4 =>  

请您参考如下方法:

让我们逐步了解这一点。

def gcd(a, b): 

这定义了一个新函数 gcd,它在计算中使用变量 a 和 b。这些值必须在函数开始之前设置。

while b: 

除非一个数字等于 0,否则它被认为是真实的。因此,如果 b = 0,则这部分代码将不会执行。

 a, b = b, a%b 

为清楚起见,我将其扩展为两行。

a = b 
b = a%b 

第一部分是不言自明的——第二部分显然不是。 a%b 是 a (mod b) 的 python 表达式 模数是数学函数,在最基本的状态下,返回两个数字的余数。例如,12%5 = 2; 12/5 的余数是 2。

不过,在编写实际代码时,请确保将它们放在同一行。 “在一行中,赋值同时发生(由元组打包和解包提供)。在两行中,赋值一个接一个地发生,这给出了错误的答案(b 将始终为 0)”- Tim

这些行无限重复,直到变量 b 等于 0。之后,代码执行:

return a 

这会将值 a 返回给程序的其余部分,以便稍后可以使用它。它还结束了该功能。

要阅读有关欧几里德方程的更多信息(并且...因为我喜欢密码学和数学,所以“扩展”版)转到this Wikipedia page.

希望对您有所帮助!