ilj*_*yya 1 python python-2.7 greatest-common-divisor
更新:一旦我不知道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
Run Code Online (Sandbox Code Playgroud)
我认为它的工作原理如下:
gcd(3,4) => while 4: => 3,4 = 4, 3%4 =>
Run Code Online (Sandbox Code Playgroud)
让我们一步一步地完成这个步骤.
def gcd(a, b):
Run Code Online (Sandbox Code Playgroud)
这定义了一个新函数gcd,它使用变量a并b在其计算中.必须在函数开始之前设置这些值.
while b:
Run Code Online (Sandbox Code Playgroud)
除非数字等于0,否则它被认为是真的.因此,如果b= 0,那么这部分代码将不会执行.
a, b = b, a%b
Run Code Online (Sandbox Code Playgroud)
为清楚起见,我将把它扩展为两行.
a = b
b = a%b
Run Code Online (Sandbox Code Playgroud)
第一部分是相当自我解释 - 第二部分绝对不是.a%b是a (mod b)模数的python表达式是数学函数,它们在最基本的状态下返回两个数字的余数.例如,12%5 = 2; 剩下的12/5是2.
在编写实际代码时,请确保将它们保持在同一行."在一行中,作业同时发生(礼貌包装和拆包).在两行中,作业一个接一个地发生,这给出了一个不正确的答案(b将永远为0)" - 蒂姆
这些行无限重复,直到变量b等于0.之后,代码执行:
return a
Run Code Online (Sandbox Code Playgroud)
这会将值返回a给程序的其余部分,以便以后可以使用它.它也结束了这个功能.
要阅读有关欧几里德方程的更多信息(并且......因为我喜欢密码学和数学,'扩展'版本)请访问此维基百科页面.
我希望这有用!
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |