栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

辗转相除法原理小结

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

辗转相除法原理小结

在学习辗转相除法前,先了解与其密切相关的更相减损术。

更相减损术原理(总结):两个数的的和若可以被最大公因数m整除,而且两数中有一个数m被整除,则另外一个数也可以被m整除。(最大公因数存在便满足)然后这两数相减,得到第三个数(大减小),三个数的关系为第三个数和较小数的和为较大的那个数。(对比发现,满足最开始两数和与m的关系)重复该过程,当两数相减为零时,最大公因数便找到了(最后得出的两数中的任意一个)

例子:161和63

161-63=98

98-63=35

63-35=28

35-28=7

28-7=21

21-7=14

14-7=7

7-7=0

如此便得到最大公因数7

那再来了解辗转相除法

其实会发现,它的是更相减损术的浓缩。

它将两个数相减的过程变为两数求余的形式,使两数相减不必再判断两个数的大小。

#include
int main()
{
    int a,b,t;
    scanf("%d %d",&a,&b);
    while(b!=0)
    {
        t=a%b;///这一行可以看为实现两数相减且无需判断大小的过程
        a=b;
        b=t;
    }
    printf("%d",a);
    return 1;
}

 我们可以拿161和98试试,发现无论a=161,


b=98还是a=98,b=161在其中会被转为小数在下,大数在上。

我么可以尝试推一推。

t=161%98

t=63;

a=98;

b=63;

以及

t=98%161

t=98;

a=161;

b=98;

因为这个原因,程序在运行中,就变为了从我们所想的的大数减小数形式了。

161 98
7
Process returned 1 (0x1)   execution time : 3.950 s
Press any key to continue.

98 161
7
Process returned 1 (0x1)   execution time : 3.250 s
Press any key to continue.



最后结束时,在更相减损术中是找到两个数相减为零 。在辗转相除法中是a能被b整除。

我的辗转相除法的小结到此结束。

(第一次写博客,希望大家支持,谢谢!!)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/664957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号