微软题,整数列的最大公约数

求一列整数的最大公约数,用 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

  1. There are currently no comments.
Leave a Comment?


« 微软题,链表逆序  —  屠龙之技(一个有趣的签名档) »

Tags

Blogroll

Fairy World | STUPiD | 阅微草堂 | ShelleX | 流浪五天