#问题描述:

给你一个正整数list L, 如 L=[2,8,3,50], 求列表中所有数的最小公倍数(不用考虑溢出问题)
如L=[3,5,10], 则输出30

#思路分析: 参考博文 趣题:不用除法,如何求n个数的最小公倍数 , 思路就是每行的最小数字都加上自己,直到都相等为止。如下例子:

30 12 18
30 24 18
30 24 36
30 36 36
60 36 36
60 48 36
60 48 54
60 60 54
60 60 72
90 60 72
90 72 72
90 84 72
90 84 90
90 96 90
120 96 90
120 96 108
120 108 108
120 120 108
120 120 126
150 120 126
150 132 126
150 132 144
150 144 144
150 156 144
150 156 162
180 156 162
180 168 162
180 168 180
180 180 180

##代码如下

L = [2, 5, 6, 7]
b = [i for i in L]
length = len(L)
def all_equal(ilist):
	start  = ilist[0]
	for key in ilist[1:]:
		if start != key:
			return False
	return True
while not all_equal(L):
	min_num = min(L)
	for index, item in enumerate(L):
		if item == min_num:
			L[index] += b[index]
print L[0]


blog comments powered by Disqus

Published

07 February 2014

Tags