python[课后作业] 第017讲 动动手1题求最大公约数
这是我写的代码,可以运行出正确结果,但下面会有报错是什么情况啊。。def gcd(x,y):
while 1 :
remainder = x%y
x = y
y = remainder
if remainder == 0 :
print(x)
gcd(1997,615)
这是运行结果:
1
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-7-535b7d4b444a> in <module>
7 print(x)
8
----> 9 gcd(1997,615)
<ipython-input-7-535b7d4b444a> in gcd(x, y)
1 def gcd(x,y):
2 while 1 :
----> 3 remainder = x%y
4 x = y
5 y = remainder
ZeroDivisionError: integer division or modulo by zero 肯定是除到最后有0了,只需要加个判断,如果为0就跳过什么的 如果 y 为 0,做除法会报错。所以需要判断当 y 不为 0 时才执行循环:
def gcd(x, y):
while y != 0:
remainder = x % y
x = y
y = remainder
if remainder == 0:
print(x)
gcd(1997, 615)
页:
[1]