欧几里德算法我在做什么?Python约翰·泽尔

2024-06-01 07:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

两个值的最大公约数(GCD)可以使用欧几里德算法计算。从值m和n开始,我们反复应用公式:n,m=m,n%m,直到m为0。此时,n是原始m和n的GCD。编写一个程序,使用此算法查找两个数字的GCD

我正在使用- 我做错了什么

def gcd(m, n):
  m=int(input("Enter the number for m:"))
  n=int(input("Enter the number for n:"))
    while m!=n 
     if m>n:
        m=m−n
     else:
        n=n−m
     return m

Tags: the程序算法numberforinputdef数字
1条回答
网友
1楼 · 发布于 2024-06-01 07:23:29

您的问题是return mwhile循环的第一次迭代结束时。您需要等待while m != n结束后再返回

当你这样做的时候,把input()语句丢了。您已经为函数提供了mn的值,这些值要用作函数的参数

def gcd(m, n):
    while m!=n 
        if m>n:
            m=m−n
        else:
            n=n−m
    return m

要运行这个函数,您需要在调用函数之前请求mn的值,然后使用这些值

a=int(input("Enter the first number:"))
b=int(input("Enter the second number:"))

print(gcd(a, b))

相关问题 更多 >