#————————————————————————————————————————————#
求N个整数的最大公约数
方法:二分法 + 辗转相除法
当N规模比较大的时候效率较高(就目前看过几个方法中,粗略计算下时间复杂度得出的结果,有更高效率的方法欢迎留言)
#————————————————————————————————————————————#
一下是python代码:
#其中binary()使用了递归
def compare(left0,right0):
left = left0[0]
right = right0[0]
result = []
while right > 0:
temp = left % right
left = right
right = temp
result.append(left)
return result
def binary(list1):
if len(list1) < 2:
print("single",list1[0])
return list1[:]
else:
middle = int(len(list1)/2)
left = binary(list1[:middle])
right = binary(list1[middle:])
large = compare(left,right)
return large
list1 = [49,91,77,112]
print ("large: ",binary(list1))