36_求最大公约数
示例:
输入:24
54
输出:6
1、欧几里得算法_辗转相除法
#辗转相除法 m=int(input("请输入第一个数:")) n=int(input("请输入第二个数:")) if m<n:#确保m>n t=m m=n n=t r=m%n while r!=0: r=m%n m=n n=r print(f"最大公约数为{m}")
2、更相减损法
(1)定义:可半者半之,补课班这,副置分母、分子之数,以少减多,更相减损,求其等也,以等数约之。
(2)注意:以少减多的意思,要确保差数值一定要大于0,所以引入abs函数实现
import math #更相减损法 m=int(input("请输入第一个数:")) n=int(input("请输入第二个数:")) factor=1#因数 if m<n: t=m m=n n=t #约简,可半者半之 while (m%2==0)and(n%2==0): factor=factor*2 m=m//2 n=n//2 #更相减损,求其等也 r=abs(m-n) while n!=r: m=n n=r r=abs(m-n) print(f"最大公约数为{r*factor}")

浙公网安备 33010602011771号