这是我的计划,以确定“两个数字的最大共同点”
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,这是不正确的。
答案 0 :(得分:1)
x = min(integer1, integer2)
while integer1 % x or integer2 % x:
x = x - 1
x
然后应用您的逻辑不会改变x
可以从最小值而不是最大值x
,它应该同时满足integer1 % x == 0
和integer2 % x == 0
,因此while
的停止条件应为integer1 % x != 0 or integer2 % x != 0
(以及{ {1}}这里有多余的int to bool转换,所以你可以跳过它们)!=0
表达式的行为方式与您的想法不同,"正确"方式是a and b == 0
。