• 《具体数学》——数论


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

      整除性:

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

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

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

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

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

      我们来探讨计算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'),这便形成了递归的求解模式。

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

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

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

      素数:

      由于素数能够构成所有的整数,因此素数非常的重要。素数之所以能够表示出所有的整数,是基于算术基本定理,也称唯一分解定理。

     

      其实关于这条定理的正确性是显然的,但是当我们在一些情况中考虑到无理数,例如6 = 2*3 = (4+ √10)(4 - √10),我们就需要一个严谨的证明了。

      证明:

     

      素数的例子:

      定理:存在无穷多个素数。欧几里得在他的《原本》中给出了简单的证明,这里简单的呈现以下。

      考虑反证法,假设存在有限个素数,p1、p2、p3……pk,则考虑整数M = p1p2p3……pk  + 1,显然对于任意的pi,均不是M的因子,因为pi是M-1的因子,所以在这种假设情景下,M必然是个素数,因此假设不成立,证毕。

      我们顺着欧几里得的思路,定义一个欧几里得数,e[n] = e[1]e[2]……e[n-1] + 1 (n >= 1) , 且e[0] = 1.实践表明,对于e[i],其是不是素数是不确定的,但是我们能够证明,对于任意的m、n,有gcd(e[m],e[n]) = 1,即任意两个欧几里得数是互素的。

      证明:考虑e[k],e[k+1],gcd(e[k] , e[k+1]) = gcd(1 , e[k]) = 1 ,因此任意相邻两项欧几里得数是互素的,而互素性具有传递性,证毕。

      另外关于素数有两条定理。

      1.对于第n个素数Pn , 有Pn ~ n ln n.

      2.对于不超过x的素数个数π(x),有π(x) ~ x/ ln x.

      这两条定理的证明需要更高阶的数学方法,《具体数学》一种并没有提及,这里也暂时不体现。

      互素:

      在《具体数学》一书中,我们约定⊥表示互素,即m⊥n,有gcd(m,n) = 1.

      基于互素的概念,我们能够看到如下两个简单法则。

      法则:k⊥m,k⊥n,有k⊥mn.

      Stern-Brocot树:

      我们这里介绍一种能够将所有互素情况表示出来的方法——Stern-Brocot树。它的构造方法是这样的,从0/1、1/0开始,对于任意两个相邻的分数,m/n、m'/n',我们在这两个分数中间插入一个中位分数——(m+m')/(n+n')。

      我们结合一个例子来看。

     

      得到这样一个分数序列,我们按照中序遍历来构造完全二叉树,就会得到如下的Stern-Brocot树。

     

      则树中节点记录的分数的分子和分母便是一组互素的整数,显然这棵树可以无限构造下去,即可不重复的构造出所有的互素情况。

      这样似乎感觉有点唐突,这个过程还有很多逻辑疑点啊。

      质疑一:你如何确保树中的分数不会重复出现?

      证明:通过这个构造过程,我们通过通分的方法很容易验证m/n、m'/n'、(m+m')/(n+n')三个分数的大小关系,由此可看出整个过程中不会重复构造出某个分数,证毕。

      质疑二:你如何保证每个分数的分子和分母一定是互质的?

      证明:首先我们通过观察会发现这样一个惊人规律,相邻分数m/n、m'/n',均满足nm' - n'm = 1,同样,我们在构造中位分数(m+m')/(n+n')之后,依然满足这个规律,即有如下等式成立。

      n(m+m') - (n+n')m = 1,因此n(m+m')⊥(n+n')m,结合n⊥m,可推知m+m'⊥n+n',证毕。

      质疑三:你如何保证所有的互素的组合都能在这样一个无限二叉树中某一个节点中出现呢?

      证明:我们这里假设a/b是任意一个我们要的互素的组合,我们将其放入一个某个连续分数区间[m/n,m'/n']当中,讨论a/b与(m+m')/(n+n')的关系,无非由如下的三种情况。

      ①a/b = (m+m')/(n+n'),构造完成。

      ②a/b < (m+m')/(n+n')    m' <- m+m' , n' <- n + n' 

      ③a/b > (m+m')/(n+n')    m  <- m+m' , n <- n + n'

      这类似一个二分的过程,这使得”包裹“a/b的区间长度越来越小,也使得(m+m')/(n+n')越来越接近a/b,那么(m+m')/(n+n')最终是否能等于a/b呢?

      我们分析③,我们易知an - bm > 1,bm' - an'>1,将两式分别乘以(m'+n')和(m+n)并相加,得到如下不等式。

      (m'+n')(an-bm) + (m+n)(bm'-an') > m + n + m' + n',结合nm' - n'm = 1这个条件,我们展开进行整理,会得到如下不等式。

      a+b > m' + n' + m + n,当a + b = m' + n' + m + n的时候,便返回了①情况。显然,我们模拟上述二分的过程,从0/1、1/0开始,对于m',m,n,n',每次二分过后的迭代都会使得m' + m + n + n'增大,因此至多经过a + b次二分之后,我们会使a + b = m' + n' + m + n。

      证毕。

      同余关系:
      对于每一种运算,我们应该理解其内涵,方能很好的利用这种工具、对于模运算,给一个最简单的式子,a = c (mod m),我们能够从怎样的角度来解释这个式子所表达的内涵呢?可以这样想,我有一根长度为a的绳子,然后我每次砍掉长度m,直到剩余的绳子长度不足m,那么剩余的绳长便是c。基于对同余运算内涵的理解,可以极大的方便我们探讨模运算的性质。
      考察这样一个规律:如果a = b(mod m),那么必有a - b是m的整数倍,基于模运算的内涵,它的正确性是否变得一目了然呢?
      同余运算与基本四则运算的联系:
      +:对于a = b(mod m) , c = d (mod m),有a + c = b + d(mod m)。
      通过对模运算内涵的理解,我们很自然的能够理解这个定理的正确性,而很容易看到,减法、乘法、乘方运算都能够转变成加法运算,因此他们都有类似的定理。
      那么除法呢?对于ad = bd (mod m),是否满足a  = b (mod m)呢? 显然不总是满足,但是在一些特殊的情况下却可以满足这个消元性质。
      当d⊥m,即gcd(m,d) = 1, 在ad = bd(mod m)的基础上等式两边同乘d',即add' = bdd' (mod m),其中d'满足dd' + mm' = 1,即dd' = 1(mod m),因此a  = b(mod m)。
      由此我们不难对一般情况进行推广,  在ad = bd(mod m)的基础上等式两边同乘d',即add' = bdd' (mod m),其中d'满足dd' + mm' = gcd(d,m),即dd' = gcd(d,m)(mod m),因此a*gcd(d,m)  = b*gcd(d,m)(mod m)   ①
      我们先去讨论同余运算的另外一个性质:分配律。即(a mod m)d = ad mod md,其实用上面割绳子的角度依然可以很好的解释这个性质,这里就不再赘言。
      因此①还可以写成这种形式,当ad = bd (mod m),有a  = b(mod m/gcd(d,m))。
      我们再单纯从模变化的角度来探讨同余运算的性质,依然从割绳子的例子除法,对于a = b(mod md),a = b(mod m)依然成立,不过是割绳子的次数变为原来的d倍嘛,在后者割绳子的过程中,很显然包含着前面的所有阶段,因此等式成立。
      现在我们反过来,基于较小的两个模,如果a = b(mod m),a= b(mod n),有着相同的原理,a = b(mod lcm(m,n))依然成立。特殊的,如果gcd(m,n) = 1,则a = b(mod mn),这就可以联系到孙子发明的中国剩余定理了,笔者将在后面的文章中介绍。
      我们将刚刚提到的特殊情况与算术基本定理联系起来,对于m = ∏p^mp ,有a = b(mod m)  <=> a = b(mod p^mp) , 对所有m的素因子p。
      以素数幂为模的同余式是所有以整数为模的同余式的基础。

      独立剩余:

      基于同余式,我们这里有一个很重要的工具,叫做剩余系。

      定义:对于一个整数x,可将其表示成r元实数对,即Res(x) = (x mod m1 , x mod m2,……,x mod mr),对于i、j∈[1,r],i≠j,满足mi⊥mj.

      通过Res(x),我们可以唯一确定x mod m的结果,其中m  = m1m2……mr.

      结合一个例子,我们便会对定义一目了然。

     

      在这里例子中,m = 15 , m1 = 3 , m2 = 5,在x  ∈[0,m-1]所形成的剩余系Res(x)中,我们容易看到x mod m的结果都是各不相同的,而我们惊奇的发现,Res(x mod 3 , x mod 5)的结果也是各不相同的,这是否有着什么内在的规律呢?

      证明:我们假设对于x1、x2∈[0,m-1],x1 ≠ x2,有Res(x1) = Res(x2),即x1 = x2 (mod 3) , x1 = x2(mod 5),即x1 = x2(mod 15),这显然与假设条件相悖,因此假设不成立,我们能够得出结论,对于某个二元剩余系,任意x∈[0,m-1],Res(x)都是各不相同的。

      另外我们还可以观察到,在这个实例中,x取得15种情况,而x mod 3的结果有3种,如果将x mod 3 = (0、1、2)看作一个循环节的话,则这个例子中出现了5个循环节,加上前面我们证明出来的性质,我们会发现,Res(x)的形式可以很有规律的找出来:

      (0,0)、(0,1)、(0,2)、(0,3)、(0,4)

      (1,0)、(1,1)、(1,2)、(1,3)、(1,4)

      ……

      这会有什么作用么?这样一来,对于m = m1m2,我们可以通过x mod m1和x mod m2的结果,即剩余系中的两个分量,来反向唯一的确定x mod m的值,这在证明欧拉定理 的积性的时候发挥了很重要的作用。

      威尔逊定理:

        (p-1)! = -1 (mod p)   <=>  p是素数 

      证明:

      充分性:即正(p-1)! = -1(mod p) => p是素数。我们从其逆否命题出发,发现非常易证。

      必要性:基于逆元的概念,我们发现,对于集合A∈{1,2,……p-1},任意i∈A,存在j∈A,使得ij = 1(mod p),也就是说,A中任意一个元素关于模p的逆元依然在这个集合当中。我们需要考虑到的是,这个集合中某些元素的逆元可能是它本身,为什么需要关注这个呢?因为我们想将(p-1)!中p-1个因子进行配对,这样便可以利用逆元的性质了。

      现在我们考虑关于模p的逆元是本身的情况,有x^2 ≡ 1(mod p),即x = 1或x = p-1,因此(p-1)! ≡ p-1 ≡-1(mod p)。必要性成立。

      证毕。

      μ(m)莫比乌斯函数:

      定义:∑μ(m) = [m = 1] , dm.(注,这里[m = 1]中的m = 1表示一个判断运算)。

      基于莫比乌斯函数,数学家莫比乌斯给出了莫比乌斯反演公式,即一种转化f(m)、∑f(d),dm两个函数的新的方法。

      莫比乌斯反演:g(m) = ∑f(d) , dm , <=> f(m) = ∑u(d)g(m/d) , dm。

      证明:在证明之前,我们先稍稍做出一些铺垫,我们来讨论两个关于"∑“运算符中涉及整除的恒等式。

      引理1:对于数列an,有∑am  ≡ ∑a(m/n) , 其中m 。这条引理的正确性是显然的。

      引理2:

    ,如果说引理1是表征了下标因子和的一个维度的话,那么这里就有两个维度了,结合对∑符号和因子内涵的理解,并不难理解这个引理的正确性。

      那么下面开始进行充分性的证明,由如下的图片呈现出来。(因为博客后台无法编辑"∑"的下标参数。)

     

       必要性采取类似的方法。

      我们考察莫比乌斯函数的积性,从定义出发,g(m) = [m = 1]显然是积性的,因此莫比乌斯函数也是积性的,我们从这个角度出发,将莫比乌斯函数进一步与前面我们已经提到的算术基本定理联系起来。

      当m = p^k,p是素数,则μ(1) + μ(p) + μ(p^2)……+μ(p^k) = 0.则μ((1) = 1,μ((p) = -1,μ(p^2)=……=μ(p^k) = 0.

      因此μ(m)有如下的表示方式。

      μ(m) = ∏μ(p^e[i])

      当m = p1p2p3……pr , 有μ(m) = (-1)^r。

      否则,μ(m) = 0。

       

      费马小定理:

      对于n⊥p,p是素数,有n^p-1 ≡ 1(mod p)。

      证明:首先我们基于这样一个结论,对于n⊥p,那么p-1个数n、2n、3n……(p-1)n分别对n取余的结果是1、2、3……p-1的一个排列。

      为了证明这个结论,我们只需证明对于任意的i,j∈[1,p-1],我们都有in ≠ jn(mod p)。

      考虑反证法,假设in ≡ jn (mod p)。由于n⊥p,因此i ≡ j(mod p)。因为i,j∈[1,p-1],因此i mod p = i , j mod p = j,又因为i 不等于j,这与已知形成了矛盾,证毕。

      我们现在考虑将这p-1个数乘起来然后对p取余。

      即n * 2n * 3n …… (p-1)n  (mod p) = (n mod p) * (2n mod p)……((p-1)n mod p)

                                                        = (p-1)! (mod p)  

       而左式可以用(p-1)! * n^(p-1)来表示,即(p-1)! * n^(p-1) ≡ (p-1)!  (mod p),  由于p是素数,显然p⊥(p-1)!,因此我们可以将(p-1)!约去,即得到,n^(p-1) ≡ 1(mod p),证毕。

      φ(m)欧拉函数:

      定义:{0,1,2……m-1}中和m互素的个数,我们用φ(m)来记录。

      欧拉定理:对于n⊥m,n^φ(m) ≡ 1(mod m).

      证明:观察欧拉定理的形式,我们会发现它和费马小定理非常相似,可以说就是费马小定理的一个推广形式(费马小定理中的模p必须是素数,但是这里对m并没有这个要求)。

      因此我们可以在一次模拟费马小定理的证明过程,取出{0,1,2……m-1}中所有与m互素的数字m'1,m'2,……m'i,并乘以n,等效于费马小定理证明中取的p-1个数n,然后进行类似的推导,我们容易得出这样的结论,n^φ(m) * ∏m'i ≡ ∏m'i (mod m),而很显然的是∏m'i  ⊥ m,因此根据同余运算的性质,这里可以约掉∏m'i,所以有n^φ(m) ≡ 1(mod m) , 证毕。

     

      

     
     

     

     

  • 相关阅读:
    文件查找和压缩
    shell脚本编程基础
    [模板]数据生成与对拍
    Codeforces Round #746 (Div. 2)
    Codeforces Round #712 (Div. 2)
    Codeforces Round #715 (Div. 2)
    Codeforces Round #752 (Div. 2)
    提高模拟赛Day8T3树上跑步
    提高模拟赛Day8T2最大匹配
    提高模拟赛Day8T1求中位数
  • 原文地址:https://www.cnblogs.com/rhythmic/p/5479171.html
Copyright © 2020-2023  润新知