| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 566 人关注过本帖
标题:辗转相除法的原理
取消只看楼主 加入收藏
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
结帖率:86.21%
收藏
已结贴  问题点数:1 回复次数:0 
辗转相除法的原理
辗转相除法,即欧几里德算法,被用来求两个数的最大公约数,书上只是很简单的教会你,通过辗转相除,直到最后余数为0,此时的除数便是两数的最大公约数。
为了进一步说明这其中的原理,现在就介绍一下,希望对一些人有所帮助。尽量通俗易懂

( a , b )表示a 和b的最大公约数
a | b 表示a可以整除b

现在开始证明:
给你两个数a 和 b(假定a大于b),那么你可以通过除法,写出如下的表达式:a = q*b + r 。这很容易明白,就是用a除以b,得到一个商q和余数r 。

通过辗转相除,直到余数为0,此时除数便是最大公约数。假定最后a成了A,b成了B,于是(A,B)= (a,b)此时,便是最需要理解的地方,为什么这两组数的最大公约数就是相等的呢?
回到a = q*b + r 。先假定a 和 b的最大公约数是d,即(a ,b)= d,现在你的任务就是证明( b,r)= d。
证明:
因为d | a,且d | b,
则d | r( 在这里就不证明为什么了,稍微想象你就明白了)
所以d是b和r的公约数,但是我们不知道d是不是b和r的最大公约数
假设任一c是b和r的最大公约数,
则c|r ,且c | b,
则c | a,
所以c是a和b的公约数,
所以c <=d,(已经假定了d是a和b的最大公约数),
所以d就是b和r的最大公约数了。(你假定了c是任意的,也就是说d大于任意其他的公约数,当然d就是最大的了)
也就是说(a,b)= (b,r)
然后你可以像a = q*b + r这样,写出b和r之间的关系,一直写下去,直到余数为0,而(x,0) = x。
然后你可以逆推,就可以得到(A,B)= (a,b)

总结:
由于里面绕的歪子可能有点多,需要慢慢理解。最关键的就是先证明(a,b)= (b,r),然后一直写下去,直到余数为0。然后根据相等的等价性(即a=b,b=c,则a=c),便得到了结论
搜索更多相关主题的帖子: 欧几里德 表达式 公约数 
2012-11-13 16:07
快速回复:辗转相除法的原理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044207 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved