def main():
numbers = input()
if numbers == "0":
exit()
else:
number_list = [int(i) for i in numbers.split()]
def calculate_gcd(number_list):
for i in range(1,smallest_number(number_list)+1):
for n in range(0,len(number_list)):
if number_list[n] % i == 0:
check_list += number_list[n]
more code - but not important for the question im asking
my code was hardly complete and only worked for max 3 size lists, sadly.
我如何看待逻辑
我发现问题
有关制作gcd逻辑和评论No.5(粗体)的任何建议吗?
谢谢
答案 0 :(得分:2)
为什么不解决一个小问题,而不是解决更大的问题。你怎么找到两个数字的gcd?嗯,这有多种算法。让我们使用迭代的:
def gcd_iterative(a, b):
while b:
a, b = b, a % b
return a
现在,有一点需要注意的是,如果你有多个数字,而你想找到所有数字的gcd,那么它就是:
gcd(gcd(...(a, b), c), ...)
简单来说,如果您想找到三个数字(a,b,c)的gcd,那么您将执行以下操作:
gcd = gcd_iterative(a, b)
gcd = gcd_iterative(gcd, c)
所以,现在如果您有一个数字列表lst
,您可以执行以下操作:
>>> gcd = lst[0]
>>> for num in lst[1:]:
gcd = gcd_iterative(gcd, num)
>>> print(gcd)