一.辗转相除法:
顾名思义,先用较大的数除以较小的数,再用较小的数除以前面所取得的余数,以此类推,等余数为0时,便取得了最大公因数,以下图为例,73便是3139和2117的最大公因数。附辗转相除法的解说视频:68.mp4_高清1080P在线观看平台_腾讯视频 (qq.com)https://v.qq.com/x/cover/i20ygjztsvi2sbt/j1422spoxoh.html
相关代码如下:
a=3139
b=2117
#t表示a除以b的余数
t=a%b
#当余数不为零的时候继续循环,当为0的时候输出结果
while t!=0:
a=b;
b=t;
t=a%b
print(b)
二.穷举:
i从2一直往上取值,取尽a,b的公因数,保存到n中,最后输出n中的最大值,如果想求两数之间的公因数,把输出结果改为n即可。
a=3139
b=2117
n=[1];i=2
while i<=max(a,b):
if a%i==0 and b%i==0:
n.append(i)
i+=1
while i>max(a,b):
break
print(max(n))
三.更相减损法:
用a,b中较大的数字,减掉减小的数字,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,此时的差值就是最大公因数
a=3139
b=2117
while a!=b:
if a>b:
a=a-b
else:
b=b-a
print(a)