zoukankan      html  css  js  c++  java
  • 中国剩余定理(CRT)与欧拉函数[数论]

    中国剩余定理

    ——!x^n+y^n=z^n

      想必大家都听过同余方程这种玩意,但是可能对于中国剩余定理有诸多不解,作为一个MOer&OIer,在此具体说明。

    对于同余方程:

    x≡c1(mod m1

    x≡c2(mod m2

    ···

    x≡c(mod mn) [其中任意的两个mi,mj互质]

      我们可以构造出一个解:

    令m=Πmi[0<i<=n],Mi*mi=m。

    那我们可以得到一组解:

    x=ΣMi*Mi-1*ci(mod m) 接下来我们想办法证明她是唯一的:

    Mi*Mi-1≡1(mod mi

    ``````

    证明:

    假设x1与x2均为方程的解,且x1,x2 模 m不同余。

    那么 mi|x1-x2

    由于(mi,mj)=1,即m|x1-x2

    也就是 x1≡x2(mod m)这与假设矛盾!故命题得证。

    ``````

      当然还有更深的道理蕴含在里面。

    /*添加一个概念:完全剩余系:大概是这个意思,就是一些数模a的余数为(0,1,2,L,a-1)即为模a的完全剩余系(概念说不严谨,大概意思知道就行...)*/

    • 定理一:(从简单方面入手)

    对于m1,m2。我们记x(1)为m1的一个完全剩余系,x(2)意思相同。

    对于x(1)i+m1*x(2)j,当x(1)i,x(2)遍历m1,m2的完全剩余系时,也遍历了m1m2的完全剩余系。

    ``````

    证明:

    注意到遍历的方式只有m1m2种,我们只需要证其两两不同余即可。

    若x(1)i+m1*x(2)j≡x(1)p+m1*x(2)q(mod m1m2)

    那么m1m2|x(1)i+m1*x(2)j-x(1)p-m1*x(2)q => m1|x(1)i-x(1)p => i=p => x(1)i = x(1)j

    那么进一步的我们还可以得到:

    m2|x(2)j-x(2)q => j=q => x(2)j=x(2)q

    固原命题得证。

    ``````

    • 定理二:

    当然我们希望这个式子具有对称性,所以我们考虑(m1,m2)=1的情况。

    其实因为(m1,m2)=1,所以x(1)与x(1)*m2都是模m1的完全剩余系,既然这样我就可以得到

    x(1)*m2+x(2)*m1当x(1),x(2)分别遍历其各自的完全剩余系时,x(1)*m2+x(2)*m1会遍历m的完全剩余系。

    • 定理三:

    我们想要更加一般的结论,对于n>=2,那么

    m=m1*m2*L*mn,其中任意的mi与mj(i≠j)是两两互质的,Mi*mi=m,即有:

    ΣMi*x(i),当每个i遍历其各自的完全剩余系时,也会遍历m的完全剩余系。

    ``````

    证明(我们当然可以使用数学归纳法):

    ①   当n=2时,由定理二已知其成立。

    ②   我们假设当n>2时命题成立,

    我们记X=Σ(x(i)*Mi/Mn+1),m=Σmi   [1<=i<=n+1]

    则要证的式子化为:

    x(n+1)Mn+1+mn+1X,注意到mn+1与Mn+1互质,由定理二可知,定理三成立。

    ``````

    也就是说x(i)的每一种选择与模m的完全剩余系时一一对应的,也就是说x∈[0,m-1]的同余方程解是存在且唯一的。

      这时候我们再回去看欧拉函数,假设p为质数

    φ(p)=p-1

    φ(p^k)=p^k-p^(k-1)=p^(k-1)(p-1)

    如果(p,q)互质,那么φ(pq)会等于什么呢?(猜测φ(pq)=φ(p)*φ(q))

    ``````

    假设p1为模p的完全剩余系,q1亦然。

    那么p1*q+q1*p,当p1,q1分别遍历其各自的完全剩余系,p1*q+q1*p也会遍历模pq的完全剩余系。

    ①注意到若(a,p)=1且a<p,

    (b,q)=1且b<q

    那么a*q+b*p一定没有pq的质因子,可以自己想一下。或者可以这样想:

    (a*q,b*p)=1,即他们没有公共的质因子,就是说他可以表示成两组质因子分解的和,既无法因式分解,所以(a*q+b*p,pq)=1。

    ③   (a,p)≠1且a<p,b亦然。

    那么a*q+b*p一定能够因式分解,就是一定能表示成x*y的形式,并且(x,y)≠1。

    ``````

    有了上述定理,欧拉函数的计算方法已经得证(请读者自己领会)。

      这里给出φ的计算方法:

    φ(n)=n*(1-1/p1)*(1-1/p2)*L*(1-1/pk),pi为n的质因子。

      本Lowbee能力有限,如有错误,请各位大佬指正。

  • 相关阅读:
    Warsaw University Contest Petrozavodsk, Thursday, January 31, 2008 J题,Gym100096J
    FZU2282--错排公式
    POJ 3468 区间加减 区间求和
    HDU 1556 树状数组
    HDU 5480 树状数组
    Tomcat
    Nginx
    Centos7安装后无法联网
    限制服务器ssh登录及防御措施
    DHCP
  • 原文地址:https://www.cnblogs.com/_inx/p/7228717.html
Copyright © 2011-2022 走看看