加载中…
个人资料
gargden
gargden
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,152
  • 关注人气:10
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

求最大公约数(两种方法)

(2022-03-14 19:39:48)
分类: 研究-学习
求最大公约数,很早就听说过辗转相除法。今天在学习迭代法时,看到了另一种方法:

a=int(input("第一个数:"))
b=int(input("第一个数:"))
while a!=b:
    if a>b:
        a=a-b
    else:
        b=b-a
print(a)
----------------
a=int(input("第一个数:"))
b=int(input("第一个数:"))
while a!=b:
    if a
        a,b=b,a
    a=a-b
print(a)
即如果两个数不相等,就一直采用大数减小数的方法,直到两个数相等时,这个数就是最大公约数。

这跟我之前了解到的辗转相除法好像不一样,网上查询后,得知确实不是。
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

a=int(input("第一个数:"))
b=int(input("第一个数:"))
while b>0:
    a,b=b,a % b
print(a)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有