为什么我的“最大公分母”计划没有输出正确的信息?

时间:2018-06-06 23:57:06

标签: python algorithm

这是我的计划,以确定“两个数字的最大共同点”

integer1 = int(input("Enter an integer:"))
integer2 = int(input("Enter an integer:"))

if integer1 > integer2:
    x = integer1
    while integer1%x and integer2%x !=0:
        x = x - 1

elif integer2 > integer1:
    x = integer2
    while integer1%x and integer2%x !=0:
        x = x - 1

print("the gcd of",integer1,"and",integer2,"is",x)

例如,当我输入值“25”和“50”时,我的程序会说GCD是50,这是不正确的。

1 个答案:

答案 0 :(得分:1)

x = min(integer1, integer2)
while integer1 % x or integer2 % x:
    x = x - 1
  • 避免重复您的代码,只需设置x然后应用您的逻辑不会改变
  • x可以从最小值而不是最大值
  • 开始
  • 要接受x,它应该同时满足integer1 % x == 0integer2 % x == 0,因此while的停止条件应为integer1 % x != 0 or integer2 % x != 0(以及{ {1}}这里有多余的int to bool转换,所以你可以跳过它们)
  • 一般来说,!=0表达式的行为方式与您的想法不同,"正确"方式是a and b == 0