为什么我的“最大公分母”程序不能输出正确的信息?

2024-09-25 06:33:13 发布

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

这是我确定“两个数的最大公分母”的程序

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,这是不正确的。你知道吗


Tags: andthe程序aninputifintegerint
1条回答
网友
1楼 · 发布于 2024-09-25 06:33:13
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(这里的!=0与int-to-bool转换是冗余的,因此可以跳过它们)
  • 一般来说,a and b == 0类型的表达式的行为方式与您可能认为的不同,“正确”的方式是a == 0 and b == 0。你知道吗

相关问题 更多 >