更新:一旦我不知道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.
希望对您有所帮助!
