- 辗转相减法
流程:
- 两个数a、b,分别判断a>b得情况和b>a的情况,对于大的一方,大的数更换为“大 = 大 - 小 ”。
- 只要a不等于b,就一直重复执行步骤一。
代码:
a,b = map(lambda x:int(x),input("请输入两个数:").split())
while True:
if a>b:
a -= b
elif a <b:
b -= a
else:
print("最大公约数为{}".format(a))
break
请输入两个数:5609 5767
最大公约数为79
- 穷举法
流程:
- 两个数a、b,将小的那个数赋给c。
- 只有满足a对c求余及b对c求余的结果都为0,这个c才为最后的最大公约数。
- 若不满足步骤2,就对c自减1,再重复步骤2.
代码:
a,b = map(lambda x:int(x),input("请输入两个数:").split())
if a < b:
c = a
else:
c = b
while True:
if a%c ==0 and b%c ==0:
print("最大公约数为{}".format(c))
break
else:
c -= 1
请输入两个数:5609 5767
最大公约数为79
- 辗转相除法
流程:
1.将两整数求余 a%b = c
2.如果c = 0;则b为最大公约数
3.如果c != 0,则 a = b;b = c;继续从1开始执行
4.也就是说该循环的是否继续的判断条件就是c是否为0
代码:
a,b = map(lambda x:int(x),input("请输入两个数:").split())
while True:
c = a % b
if c == 0:
print("最大公约数为{}".format(b))
break
else:
a = b
b = c
请输入两个数:5609 5767
最大公约数为79