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)

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱t至死不渝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值