You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python实现Euclidean algorithm求解GCD的代码错误排查求助

你提交的GCD代码存在的问题汇总
  • 参数设计逻辑冲突:你定义的gcd函数已经设置了形参m、n,但函数内部又通过input读取用户输入重新赋值,完全覆盖了传入的参数,函数的形参完全失效,不符合常规的函数封装设计逻辑。
  • 缩进语法错误:while语句的缩进层级比上方的input代码多了4个空格,违反Python的缩进规则,运行会直接抛出语法错误。
  • 循环语句语法错误:while m!=n 后缺少必要的冒号:,Python中所有判断、循环的条件语句末尾必须加冒号。
  • 算法与返回逻辑错误:首先你实现的是辗转相减法,并非题目要求的欧几里得(辗转相除法)算法;其次return语句放在了while循环内部,第一次循环执行完就会直接返回结果,根本不会循环到m == n的终止条件,计算逻辑完全错误。
  • 非法字符错误:代码里的减号是全角字符−,并非Python可以识别的半角减号-,运行会报语法错误。
符合要求的修正代码

按照题目要求的欧几里得算法规则,修正后的可运行代码如下:

def gcd(m, n):
    # 按照规则循环:当m不为0时,持续执行n, m = m, n%m
    while m != 0:
        n, m = m, n % m
    # m为0时返回n即为最大公约数
    return n

# 读取用户输入并调用函数
m = int(input("Enter the number for m:"))
n = int(input("Enter the number for n:"))
print(f"两个数的最大公约数是:{gcd(m, n)}")

内容的提问来源于stack exchange,提问作者Kassidi Turner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:06:04