中国剩余定理

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

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

对于同余方程:

x≡c1(mod m1

x≡c2(mod m2

···

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

  我们可以构造出一个解:

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

那我们可以得到一组解:

x=ΣMi*Mi-1(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能力有限,如有错误,请各位大佬指正。

中国剩余定理(CRT)与欧拉函数[数论]的更多相关文章

  1. Bzoj 2705: [SDOI2012]Longge的问题 欧拉函数,数论

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1959  Solved: 1229[Submit][ ...

  2. Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2560  Solved: 857[Submit][St ...

  3. 紫书 例题 10-26 UVa 11440(欧拉函数+数论)

    这里用到了一些数论知识 首先素因子都大于M等价与M! 互质 然后又因为当k与M!互质且k>M!时当且仅当k mod M! 与M!互质(欧几里得算法的原理) 又因为N>=M, 所以N!为M! ...

  4. Bzoj 2749: [HAOI2012]外星人 欧拉函数,数论,线性筛

    2749: [HAOI2012]外星人 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 568  Solved: 302[Submit][Status][ ...

  5. BZOJ4802 欧拉函数 数论

    原文链接http://www.cnblogs.com/zhouzhendong/p/8117744.html 题目传送门 - BZOJ4802 题意概括 Description 已知N,求phi(N) ...

  6. GCD nyoj 1007 (欧拉函数+欧几里得)

    GCD  nyoj 1007 (欧拉函数+欧几里得) GCD 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 The greatest common divisor ...

  7. 中国剩余定理 & 欧拉函数 & 莫比乌斯反演 & 狄利克雷卷积 & 杜教筛

    ssplaysecond的博客(请使用VPN访问): 中国剩余定理: https://ssplaysecond.blogspot.jp/2017/04/blog-post_6.html 欧拉函数: h ...

  8. 数论 - 欧拉函数模板题 --- poj 2407 : Relatives

    Relatives Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11372   Accepted: 5544 Descri ...

  9. BZOJ-2190 仪仗队 数论+欧拉函数(线性筛)

    今天zky学长讲数论,上午水,舒爽的不行..后来下午直接while(true){懵逼:}死循全程懵逼....(可怕)Thinking Bear. 2190: [SDOI2008]仪仗队 Time Li ...

随机推荐

  1. Python给多个变量赋值

    # Assign values directly a, b = 0, 1 assert a == 0 assert b == 1 # Assign values from a list (r,g,b) ...

  2. (转)Windows下tail命令工具(转)

    因为随笔无转载按钮,先说明原文地址是: Windows 下 tail 查看日志命令工具分享 使用方法: 下载后解压,把tail.exe 复制到 目录:C:\Windows\System32 下 文件下 ...

  3. Coursera 机器学习笔记(一)

    主要是第一二周内容 机器学习概要 机器学习是什么? 生活在信息时代的我们,其实时时刻刻都离不开机器学习算法.比如日常使用的搜索引擎就涉及到很多学习算法. Arthur Samuel 给出第一个定义.他 ...

  4. OC对象之旅 weak弱引用实现分析

    Runtime学习 -- weak应用源码学习   Runtime源码分析,带你了解OC实现过程.其中参考了大量的大神的代码以及文献,里面也有个人的见解,欢迎拍砖,欢迎交流. 两种常见使用场景 /// ...

  5. Python 的枚举 Enum

    枚举是常用的功能,看看Python的枚举. from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May' ...

  6. 限制容器对CPU的使用 - 每天5分钟玩转 Docker 容器技术(28)

    上节学习了如何限制容器对内存的使用,本节我们来看CPU. 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器 ...

  7. 【论文:麦克风阵列增强】Speech Enhancement Based on the General Transfer Function GSC and Postfiltering

    作者:桂. 时间:2017-06-06  16:10:47 链接:http://www.cnblogs.com/xingshansi/p/6951494.html 原文链接:http://pan.ba ...

  8. JDBC加载数据库驱动的方式

    JDBC作为数据库访问的规范接口,其中只是定义一些接口.具体的实现是由各个数据库厂商来完成. 一.重要的接口: 1.public interface Driver 每个驱动程序类必须实现的接口.Jav ...

  9. 网页标题(title)动态改变

    这是一只小白的突发奇想,实验多次终于有所效果.想要实现什么效果呢, 如图所示 :    要实现这个效果,大体需要两步. 第一,如何像打印似的一个一个字显示文字.要实现这个效果有多种方法.在这里我所运用 ...

  10. 实现简易版的moment.js

    github源码地址: www.baidu.com 作者: 易怜白 项目中使用了时间日期的处理方法,只使用了部分方法,为了不在引入第三方的库(moment.js),这里自己封装了项目中使用到的方法. ...