无法破解3个数字的GCD的Python代码?

无法破解3个数字的GCD的Python代码?,python,Python,我正在努力寻找3个数字的GCD,但到目前为止还没有获得多少成功。我正在使用以下代码 def gcd(a, b,c): if sum(np.array(list([a,b,c]))%min(a,b,c))==0: return min(a,b,c) else: x = np.array(list([a,b,c]))%min(a,b,c) if sum((list([x]))%min(x))==0: return

我正在努力寻找3个数字的GCD,但到目前为止还没有获得多少成功。我正在使用以下代码

def gcd(a, b,c):
    if sum(np.array(list([a,b,c]))%min(a,b,c))==0:
        return min(a,b,c)
    else:
        x = np.array(list([a,b,c]))%min(a,b,c)
        if sum((list([x]))%min(x))==0:
            return min(x)
当我在一个示例(比如gcd(21,45,60))上运行它时,它给出了以下错误

C:\Users\mmt8091\Anaconda3\lib\site packages\ipykernel\u launcher.py:6:RuntimeWarning:在余数中遇到零除

我做错了什么?也无法在网上找到任何其他解决方案。请帮助

您不需要np

试试这个:

def gcd(*args):
    a, b, *c = args
    a, b = min(a, b), max(a, b)
    gcd1 = b if not a else gcd(b % a, a)
    for i in c:
        gcd1 = gcd(gcd1, i)
    return gcd1


print(gcd(21, 45, 60))
你不需要np

试试这个:

def gcd(*args):
    a, b, *c = args
    a, b = min(a, b), max(a, b)
    gcd1 = b if not a else gcd(b % a, a)
    for i in c:
        gcd1 = gcd(gcd1, i)
    return gcd1


print(gcd(21, 45, 60))

你可以在这里找到对同类问题的解释:1)2)这是否回答了你的问题?如果你觉得更容易,你可以实现
gcd(a,b)
,然后让
gcd3(a,b,c)=gcd(gcd(a,b,c)
。Erik+1或第n个gcd通过:谢谢@Erik,我一直在尝试,但是我怎么能让gcd3(a,b,c)=gcd(gcd(a,b),c)?对不起,我是python新手。你可以在这里找到对同类问题的解释:1)2)这是否回答了你的问题?如果你觉得更容易,你可以实现
gcd(a,b)
,然后让
gcd3(a,b,c)=gcd(gcd(a,b,c)
。Erik+1或第n个gcd通过:谢谢@Erik,我一直在尝试,但是我怎么能让gcd3(a,b,c)=gcd(gcd(a,b),c)?对不起,我是Python新手