欧几里得算法求最大公约数

欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。
除数余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数
假如需要求 18 和 30 两个正整数的最大公约数:

调用函数:print(gcd(18, 30)),a,b值变化如下
a       b
30 ÷ 18 = 1……12
18 ÷ 12 = 1……6
12  ÷  6 = 2……0
至此,最大公约数为6

def gcd(a, b):
    while a != 0:
        a, b = b % a, a
    return b
print(gcd(18, 30))

  

若a、b参数互换,print(gcd(30, 18)),a、b值变化如下:

  a       b

18÷ 30 = 0……18

30 ÷ 18 = 1……12
18 ÷ 12 = 1……6
12 ÷  6 =  2……0

可见,函数 gcd(a,b) 中a、b值谁大谁小并不影响结果。只差一步循环次数

posted @ 2023-05-31 16:59  sangern  阅读(141)  评论(0)    收藏  举报