求一列整数的最大公约数,用 Python 写了,顺便还求了最小公倍数。没有考虑负数。
#!/usr/bin/env python
def gct(m, n):
'return gct and gxt'
if m > n:
a, b = m, n
else:
a, b = n, m
while 1:
r = a % b
if not r:
return b, (m*n)/b
else:
a = b
b = r
def gctArray(array):
if not array:
return None, None
x, y = array[0], array[0]
if len(array) < 2:
return x, y
for i in array[1:]:
x, unused = gct(x, i)
unused, y = gct(y, i)
return x, y
if __name__ == '__main__':
print gctArray((4, 12, 6, 8))
print gctArray((20, 12, 10, 14, 16))
运行结果:
wayman ~/t $ python gcd.py
(2, 24)
(2, 1680)
0 Comments so far