|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。
def gcd(x, y):
while y:
t = x % y
x = y
y = t
return x
print(gcd(4, 6))
以上是小甲鱼原代码,但真心表示难以理解,望表达能力强、关爱小白人士帮我理下思路,感谢!
这是著名的欧几里得算法也叫辗转相除法,是求取最大公约数的一种方法。
首先,以 x 对 y 取余,如果余数为 0 那么 y 便是最大公约数,否则,让 y 成为 x,余数成为 y 继续上述取余操作,直到余数为零。
- def gcd(x, y):
- while y: # 如果除数(同时,也是前一次取余操作的余数) y 不为零就继续循环
- t = x % y # x 对 y 取余
- x = y # 准备下一次循环,除数 y 成为新被除数 x
- y = t # 准备下一次循环,余数 t 成为新除数 y
- return x # 返回除数 y 也就是最大公约数
复制代码
请参考百度百科 https://baike.baidu.com/item/%E6 ... 7%E7%AE%97%E6%B3%95
|
|