文章目录

  • 概述
  • 中国剩余定理扩展
    • 例题
  • 总结

概述

  1. 引入:

    一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下:
    有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
    即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问题,以及以上具体问题的解法,因此在中文数学文献中也会将中国剩余定理称为孙子定理。

  2. 概述:
    孙子定理,又称中国剩余定理或中国余数定理,是数论中的一个关于一元线性同余方程组的定理,说明了一元线性同余方程组有解的准则以及求解方法。

  3. 内容
    用现代数学的语言来说明的话,中国剩余定理给出了以下的一元线性同余方程组:
    有解的判定条件,并用构造法给出了在有解情况下解的具体形式。

    中国剩余定理说明:假设整数m1,m2,...,mnm_1, m_2, ... , m_nm1​,m2​,...,mn​其中任两数互质,则对任意的整数:a1,a2,...,ana_1, a_2, ... , a_na1​,a2​,...,an​,方程组(S){\displaystyle (S)}(S)有解,并且通解可以用如下方式构造得到:

    1. 设M=m1×m2×⋯×mn=∏i=1nmi{\displaystyle M=m_{1}\times m_{2}\times \cdots \times m_{n}=\prod _{i=1}^{n}m_{i}}M=m1​×m2​×⋯×mn​=i=1∏n​mi​是整数m1,m2,...,mnm_1, m_2, ... , m_nm1​,m2​,...,mn​的乘积,并设Mi=M/mi,∀i∈{1,2,⋯,n}Mi=M/mi,∀i∈{1,2,⋯,n}{\displaystyle M_{i}=M/m_{i},\;\;\forall i\in \{1,2,\cdots ,n\}}M_i = M/m_i, \; \; \forall i \in \{1, 2, \cdots , n\}Mi​=M/mi​,∀i∈{1,2,⋯,n}Mi​=M/mi​,∀i∈{1,2,⋯,n},即Mi{\displaystyle M_{i}}Mi​是除了mim_imi​以外的n − 1个整数的乘积。
    2. 设ti=Mi−1为Mi{\displaystyle t_{i}=M_{i}^{-1}}为{\displaystyle M_{i}}ti​=Mi−1​为Mi​模mi的逆元:tiMi≡1(modmi),∀i∈{1,2,⋯,n}.{\displaystyle m_{i}}的逆元:{\displaystyle t_{i}M_{i}\equiv 1{\pmod {m_{i}}},\;\;\forall i\in \{1,2,\cdots ,n\}.}mi​的逆元:ti​Mi​≡1(modmi​),∀i∈{1,2,⋯,n}.
    3. 方程组(S)的通解形式为:方程组{\displaystyle (S)}的通解形式为:方程组(S)的通解形式为:x=a1t1M1+a2t2M2+⋯+antnMn+kM=kM+∑i=1naitiMi,k∈Z.{\displaystyle x=a_{1}t_{1}M_{1}+a_{2}t_{2}M_{2}+\cdots +a_{n}t_{n}M_{n}+kM=kM+\sum _{i=1}^{n}a_{i}t_{i}M_{i},\quad k\in \mathbb {Z} .}x=a1​t1​M1​+a2​t2​M2​+⋯+an​tn​Mn​+kM=kM+i=1∑n​ai​ti​Mi​,k∈Z.在模M的意义下,方程组(S)只有一个解:x=∑i=1naitiMi.在模{\displaystyle M}的意义下,方程组{\displaystyle (S)}只有一个解:{\displaystyle x=\sum _{i=1}^{n}a_{i}t_{i}M_{i}.}在模M的意义下,方程组(S)只有一个解:x=i=1∑n​ai​ti​Mi​.
  4. 证明:

def exgcd(a, b) :if b == 0 :return 1, 0, ax, y, d = exgcd(b, a % b)return y, x - (a // b) * y, d
def CRT(a, b) : #a, b分别是模数和余数M = 1X = 0for i in a :M *= ifor i in zip(a, b) :w = M // i[0]x, y, d = exgcd(w, i[0])X = (X + x * w * i[1]) % M  return (X % M + M) % M

中国剩余定理扩展

求解模数不互质情况下的线性方程组

  1. 原理说明:
    普通中国剩余定理要求所有的模数mim_imi​互素,如果不互素就需要使用扩展中国剩余定理
    x≡a1(modm1){\displaystyle x\equiv a_1{\pmod {m_{1}}}}x≡a1​(modm1​) —— (1)
    x≡a2(modm2){\displaystyle x\equiv a_2{\pmod {m_{2}}}}x≡a2​(modm2​) ——(2)
    ............
    x≡an(modmn){\displaystyle x\equiv a_n{\pmod {m_{n}}}}x≡an​(modmn​)
    对于(1)、(2)式,可得x=m1x1+a1x = m_1x_1+a_1x=m1​x1​+a1​、x=m2x2+a2x = m_2x_2+a_2x=m2​x2​+a2​
    可以推出m1x1+a1=m2x2+a2m_1x_1 + a_1 = m_2x_2 + a_2m1​x1​+a1​=m2​x2​+a2​->m1x1=(a2−a1)+m2x2m_1x_1 = (a_2 - a_1) + m_2x_2m1​x1​=(a2​−a1​)+m2​x2​
    如果该式成立则gcd(m1,m2)∣(a2−a1)gcd(m_1,m_2) | (a_2 - a_1)gcd(m1​,m2​)∣(a2​−a1​)
    ->m1x1=(a2−a1)(modm2)m_1x_1 = (a_2 - a_1) (mod\ m_2)m1​x1​=(a2​−a1​)(mod m2​)
    要求x最小,即求x1x_1x1​最小,使用扩展欧几里得算法exgcd(m1,m2)exgcd(m_1, m_2)exgcd(m1​,m2​)求出最小公约数d以及m1/dm_1/dm1​/d的逆,最小x1≡(a2−a1)/d∗(m1/d)−1(modm2/d)x_1 \equiv(a_2 - a_1)/d * {(m_1/d)^{-1}}(mod \ m_2/d)x1​≡(a2​−a1​)/d∗(m1​/d)−1(mod m2​/d)。
    所以x1取最小值,x1=[(a2−a1)/d∗(m1/d)−1+m2/d]%(m2/d)x_1取最小值,x1 = [(a_2 - a_1)/d * {(m_1/d)^{-1}} + m_2 / d] \% (m_2 / d)x1​取最小值,x1=[(a2​−a1​)/d∗(m1​/d)−1+m2​/d]%(m2​/d)
    代入x=m1x1+a1x = m_1x_1+a_1x=m1​x1​+a1​
    得到一个x=(m1∗m2)/d∗k+a1+m1∗(a2−a1)/d∗(m1/d)−1x = (m_1 * m _2) / d * k + a_1 + m_1 * (a_2 - a_1)/d* {(m_1/d)^{-1}}x=(m1​∗m2​)/d∗k+a1​+m1​∗(a2​−a1​)/d∗(m1​/d)−1
    则k可视为一个新的xxx,a1+m1∗(a2−a1)/d∗(m1/d)−1a_1 + m_1 * (a_2 - a_1)/d* {(m_1/d)^{-1}}a1​+m1​∗(a2​−a1​)/d∗(m1​/d)−1可视为新的a
例题

n = int(input())
def exgcd(a, b) :if b == 0 :return 1, 0, ax, y, g = exgcd(b, a % b)return y, x - (a // b) * y, g
x = 0
m1, a1 = map(int, input().split())for i in range(n - 1):m2, a2 =  map(int, input().split())k1, k2, d = exgcd(m1, m2)k1 *= (a2 - a1) // dk1 = (k1 % (m2 // d) + (m2 // d)) % (m2 // d) ###求最小正整数x = k1 * m1 + a1m1 = abs(m1 * m2 // d)a1 = x
if x != -1 :x = (a1 % m1 + m1) % m1
print(x)

总结

中国剩余定理真孙子,太难啦,我要成孙子了。

数论——中国剩余定理及其扩展详解相关推荐

  1. [数论]-----中国剩余定理(扩展中国剩余定理)

    中国剩余定理 中国剩余定理(CRT)用于求形如: { x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) ⋯ ⋯ x ≡ a k ( m o d m k ) \be ...

  2. 中国剩余定理(孙子定理)详解

    为什么发现了这个定理,这要源于一道题 淮安民间传说着一则故事--"韩信点兵",其次有成语"韩信点兵,多多益善".韩信带1500名兵士打仗,战死四五百人,站3人一 ...

  3. 第二十九章 数论——中国剩余定理与线性同余方程组

    第二十九章 数论--中国剩余定理与线性同余方程组 一.中国剩余定理 1.作用: 2.内容: 3.证明: (1)逆元的存在性 (2)验证定理的正确性 4.代码实现: (1)步骤: (2)问题: (3)代 ...

  4. 第二十六章 数论——欧拉函数(详解与证明)

    第二十六章 数论--欧拉函数(详解与证明) 欧拉函数 1.互质 2.欧拉函数的定义 3.欧拉函数的公式 4.欧拉函数的证明 5.欧拉函数的使用 (1)问题一: 思路 代码 (2)问题二: 思路 cas ...

  5. PHP中cal_days_in_month函数和calendar扩展详解

    PHP中cal_days_in_month函数和calendar扩展详解 问题: 在开发中无意间发现cal_days_in_month函数不可使用.然后就开始研究学习. 1.cal_days_in_m ...

  6. 数学--数论--中国剩余定理+扩展中国剩余定理(孙子定理)

    中国剩余定理 问题 求解同余方程组 其中m1,m2,m3...mkm_1,m_2,m_3...m_km1​,m2​,m3​...mk​为两两互质的整数 求x的最小非负整数解 定理 令M=∏i=1kmi ...

  7. 中国剩余定理与扩展中国剩余定理

    中国剩余定理又名孙子定理 用来求解同余线性方程组 其中m1,m2,m3-两两互质,求x的最小整数解: 设M为m1,m2,m3-的公倍数. 根据上面的推导,为什么x的通解形式是累加呢? 根据上面推导,推 ...

  8. 中国剩余定理及扩展中国剩余定理

    目录 中国剩余定理CRT 扩展中国剩余定理ExCRT TJOI2009 猜数字 HDU 1573 X问题 中国剩余定理CRT 中国剩余定理是用来求线性同于方程组的. \[ \begin{aligned ...

  9. 数论 · 中国剩余定理(CRT)

    UPDATE 2021 - 12 - 10:补充扩展中国剩余定理 EXCRT,额外开了一篇博客写. 2021 - 12 - 21:修改了一两句话,更严谨一些. 问题概述 小奥里的韩信点兵问题: { x ...

最新文章

  1. 启动非java虚拟机方式下运行matlab
  2. fastjson list转json字符串_程序员:JSON、JSONObject 与 JSONArray 简单讲解
  3. Intersection - POJ 1410(线段与矩形是否相交)
  4. 短视频时代不可忽视的幕后功臣竟然是它!
  5. [转]wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍
  6. Arduino学习笔记-新的按键控制方式
  7. 11.18 Apache用户认证11.19/11.20 域名跳转11.21 Apache访问日志
  8. php通过身份证判断性别
  9. ubuntu 校准时间_ubuntu server自动校正时间 | 学步园
  10. 人生需要执著——从二本三战到985博士
  11. Jupyter notebook的主题和字体美化
  12. 传统企业如何建设B2C平台做网络营销?
  13. 贾树森_(第三章)24种生活场景_(第四课)怎样自拍好看又不落俗套
  14. 建立完善的员工晋升机制_完善机制,打造晋升方案
  15. 【微信开发】-发送位置获取周边信息及生成百度全景静态图API,主要代码在private function receiveLocation($object)
  16. MATLAB常用函数(不定时更新)
  17. android推箱子需求分析,推箱子需求分析.doc
  18. 一次挖矿入侵处理记录(2021.01.27)
  19. matlab做plsda分析,Plsda分析
  20. 怎样去学习——认识自己

热门文章

  1. 指数分布族 和 广义线性模型
  2. matlab序列补零dft,补零位置的不同对频谱的影响
  3. 在书本中旅行《邹韬奋文录》
  4. 进程调度算法-时间片轮转、最高优先级和多级反馈队列调度算法
  5. 【全奖博士生】悉尼科技大学ReLER实验室招收CV/AI方向
  6. python趣味代码.绘太阳
  7. JavaScript----什么是纯函数
  8. 道德经~最厉害的人要战胜的,不是别人,而是自己
  9. 域名升级中 自动跳转_今天没事,把自己的官网从http升级到https
  10. ITIL4 讲解: IT服务连续性管理(灾备)