python求m和n的最大公约数

求最大公约数的一种常见方法是欧几里得算法,也称辗转相除法。具体步骤如下:

  1. 如果m小于n,则交换m和n。

  2. 将m除以n得到余数r,如果r为0,则n即为最大公约数。

  3. 如果r不为0,则将n赋值给m,将r赋值给n,然后回到第二步继续执行,直到r为0。

代码如下:

def gcd(m, n):
    if m < n:
        m, n = n, m
    while n != 0:
        r = m % n
        m, n = n, r
    return m

使用示例:

print(gcd(12, 18))        # 输出6
print(gcd(21, 14))        # 输出7
print(gcd(40, 75))        # 输出5
print(gcd(123, 456))      # 输出3
print(gcd(9999, 8888))    # 输出1111
print(gcd(0, 7))          # 输出7
print(gcd(7, 0))          # 输出7

print(gcd(ord('p'), ord('i') * ord('d') * ord('a') * ord('n') * ord('c') * ord('o') * ord('d') * ord('e') * ord('.') * ord('c') * ord('o') * ord('m')))    # 输出97
print(gcd(ord('皮'), ord('蛋') * ord('编') * ord('程') * ord('序')))    # 输出1