所以我有这个计划:调试Python程序LCM
def gcd(x, y):
while y % x != 0:
y = y % x
x = x % y
return y
def lcm(x, y):
(x * y)/gcd(x, y)
a = lcm(1, 2)
b = lcm(3, a)
c = lcm(b, 4)
d = lcm(5, c)
e = lcm(6, d)
f = lcm(e, 7)
g = lcm(f, 8)
h = lcm(9, g)
i = lcm(h, 10)
j = lcm(11, i)
k = lcm(12, j)
l = lcm(k, 13)
m = lcm(l, 14)
n = lcm(15, m)
o = lcm(n, 16)
p = lcm(17, o)
q = lcm(18, p)
r = lcm(q, 19)
print(lcm(r, 20))
好了,我已经工作,一分目前由于对这个职位的答案,但为什么这样的:
def gcd(x, y):
while y % x != 0:
y = y % x
x = x % y
return y
def lcm(x, y):
return (x * y)/gcd(x, y)
a = lcm(1, 2)
b = lcm(3, a)
c = lcm(b, 4)
d = lcm(5, c)
e = lcm(6, d)
f = lcm(e, 7)
g = lcm(f, 8)
h = lcm(9, g)
i = lcm(h, 10)
j = lcm(11, i)
k = lcm(12, j)
l = lcm(k, 13)
m = lcm(l, 14)
n = lcm(15, m)
o = lcm(n, 16)
p = lcm(17, o)
q = lcm(18, p)
r = lcm(q, 19)
print(lcm(r, 20))
返回此:
ZeroDivisonError: float modulo
抱怨的第二行,我猜我可能需要某种形式的if
语句把两个NUM按顺序排列。 任何人都知道为什么会发生这种情况?
谢谢。
顺便说一句,一个快捷方式解决这一问题将是'functools.reduce(LCM ,范围(1,21))' – Blender 2013-03-03 10:08:13
如果是抱怨ng关于第二行,然后在某个点'x == 0',并且你正在尝试'y%x' - 也就是'y%0',这会产生错误。 – Volatility 2013-03-03 10:22:11