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

《具体数学》——数论

时间:2016-05-10 20:52:09      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:

  从这篇文章开始,我们开始在数论这块“森林”的探秘了。

 

  整除性:

  数论中的整除性问题无非是研究数的约数、倍数,约数和倍数是一对相对的概念,如果a是b的约数,那么b就是a的倍数。我们常常用a|b来表示b能够整除a,即b/a是整数,但是“|”在使用的过程中容易和绝对值、几何定义符、条件概率混淆,所以,这里我们用a\b来表示a能够整除b。

  约数:如果b\a,则称b是a的约数。

  倍数:如果b\a,则称a是b的倍数。

  最大公约数:gcd(a,b) = max{k | k\a 且k\b}。

  最小公倍数:lcm(a,b) = min{k} k>0 , a\k 且b\k}

  我们来探讨计算gcd(a,b)的欧几里得算法。

  它基于一个重要的递推式——gcd(m,n) = gcd(n % m, m)以及gcd(0,n) = n。(其实这个递推式的证明笔者在另一篇文章中介绍过。)

  欧几里得算法还可以给我们带来更多的东西,我们基于它进行推广,用它来求解如下的一个方程的解(m‘,n’):

  m‘m + n‘n = gcd(m,n)  ①

  可以看到,如果m = 0,这个方程显然有无数组解。

  如果m != 0,基于欧几里得算法的递推式,我们取r = n % m , 则可将①进行等价转化,即r‘r + m‘‘m = gcd(r,m) ② ,可以看到r = n- (int)(n/m)m,我们将r带入到②中,并进行如下的化简运算。

  r‘[n - (int)(n/m)m] + m‘‘m = gcd(r,m)   =>  r‘n + [m‘‘ - r‘(int)(n/m)] = gcd(r,m) ③

  容易看到,由于gcd(r,m) = gcd(m,n),等式①③是等价的,因此我们会得到如下的等式:

  n‘ = r‘                          ④

  m‘ = m‘‘ - r‘(int)(n/m)   ⑤

  因此对于我们想要求解的①式的解(m‘,n‘),我们显然还需要知道②式的解(m‘‘,r‘),这便形成了递归的求解模式。

  对于①方程的求解,在数论领域的很多地方都会涉及,在这里基于它还有一个简单的推论:k\m , k\n 是k\gcd(m,n)的充分必要条件。

  证明:充分性,k是m、n的公因子,显然k是gcd(m,n)的因子。

          必要性,k是gcd(m,n)的因子,显然k既是m的因子,也是n的因子。

 

《具体数学》——数论

标签:

原文地址:http://www.cnblogs.com/rhythmic/p/5479171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!