欧几里得算法求最大公约数
欧几里得算法又称辗转相除法,是指用于计算两个非负整数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值谁大谁小并不影响结果。只差一步循环次数

浙公网安备 33010602011771号