能否用更简洁的方法实现该Python最大公约数(GCD)程序?
更简洁的GCD实现方法
你提供的这段GCD代码逻辑可行,但存在变量命名不规范(比如用g同时作为函数名和内部变量)、冗余变量(mod可省略)的问题,下面是几种更简洁且规范的实现方式:
1. 优化迭代版(辗转相除法)
去掉冗余变量,利用Python元组解包简化循环逻辑,同时规范命名:
def gcd(x, y): while x != 0: x, y = y % x, x return y x = int(input("x: ")) y = int(input("y: ")) print(gcd(x, y))
一行完成取模与变量交换,代码更紧凑易读。
2. 递归版
用递归实现辗转相除法,代码行数更少,逻辑直观:
def gcd(x, y): return x if y == 0 else gcd(y, x % y) x = int(input("x: ")) y = int(input("y: ")) print(gcd(x, y))
递归逻辑和迭代版一致,用递归调用替代循环结构。
3. 直接使用Python内置函数
Python 3.5及以上版本的math模块内置了gcd函数,直接调用是最简洁的方案:
import math x = int(input("x: ")) y = int(input("y: ")) print(math.gcd(x, y))
注意:math.gcd仅接受非负整数参数,若输入负数会自动取绝对值计算。
内容的提问来源于stack exchange,提问作者Soham Pradhan
相关产品推荐
相关产品推荐

