python求最大公因数的几种方法及思路(附源码)

一.辗转相除法:

顾名思义,先用较大的数除以较小的数,再用较小的数除以前面所取得的余数,以此类推,等余数为0时,便取得了最大公因数,以下图为例,73便是3139和2117的最大公因数。附辗转相除法的解说视频:68.mp4_高清1080P在线观看平台_腾讯视频 (qq.com)https://v.qq.com/x/cover/i20ygjztsvi2sbt/j1422spoxoh.html70879aa04faf4cc1b85af4ca69f2101f.png

 相关代码如下:

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中较大的数字,减掉减小的数字,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止,此时的差值就是最大公因数fc42d8b3436544338bd4557df86b144a.png

a=3139
b=2117
while a!=b:
    if a>b:
        a=a-b
    else:
        b=b-a
print(a)