这是python课上的题,但我确实不会,希望有人答疑解惑

这是实验课的一个问题,但我毫无思路,课上讲的云里雾里,希望有人能答疑解惑

img


def foo(a, b):
    m = a if a>b else b
    n = a if a<b else b
    while True:
        r = m%n
        if r == 0:
            print(n)
            break
        else:
            m, n = n, r


foo(8,12)

以下这个算法比较容易:

def func(m,n):
    for i in range(min(m,n),0,-1):
        if m%i==0 and n%i==0:
            return i

其它方法参考: