码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-31 00:50:43      阅读:127      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!