欧几里得算法又称辗转相除法,是指用于计算两个非负整数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值谁大谁小并不影响结果。只差一步循环次数
标签:gcd,18,欧几里得,30,最大公约数,算法,print From: https://www.cnblogs.com/sangern/p/17446707.html