首页 > 其他 > 详细

第2章 数字之魅——数字中的技巧

时间:2015-03-31 00:49:51      阅读:108      评论:0      收藏:0      [点我收藏+]

2.7最大公约数问题

问题:求两个数的最大公约数。

对于该问题:首先映入眼帘的就是两个数n m中寻找一个最小的值。然后从该值遍历到1.一旦 n%i==0&&m%i==0 那么i就是这个最大公约数啦。原理不言而喻。代码就不附上了。

之后一种就是比较经典的欧几里德算法。其中本质上的原理是这样的。gcd(n,m)表示n和m的最大公约数。

1:gcd(n,m) = gcd(n%m,m)  (n>m)

2:gcd(0,a) = a 这是合法的。因为0可以当做被除数(废话,但是为了严谨一点再次说明一下)。

式1是递推关系。式2是判断终点。 完全符合递推关系的定义啊。(不知道Kunth能不能求出这个的闭合形式呢。)

先解释一下原理:

对于1:令r=n%m 即证明 gcd(n,m) = gcd(r,m). 其中n = km+r (k属于正整数,因为n>m所以k!=0).那么r = n-km.

也就是说要证明:gcd(n,m) = gcd(n-km,m)。也就是证明n-km和m的最大公因子是n和m的最大公因子

根据素数表达式。n-km有且只有 n与m的公因子。那么简单就能知道n-km和m的最大公因子就是n和m的最大公因子。得证。

 

第2章 数字之魅——数字中的技巧

原文:http://www.cnblogs.com/Milkor/p/4379621.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!