当前位置: 首页 > news >正文

学习笔记-中国剩余定理(CRT)

一、核心思想:分而治之 + 线性组合

CRT 的本质是:

如果我们知道一个数 \(x\) 除以两两互质的 \(m_1, m_2, \dots, m_n\) 的余数,那么我们可以唯一确定 \(x\) 除以 \(M = m_1 m_2 \cdots m_n\) 的余数。

原理的关键步骤是构造一组“基解”,每个基解只在一个模数下为 \(1\),在其他模数下为 \(0\),然后加权求和。

二、先从两个模数开始理解

假设我们想解:

\[\begin{cases} x \equiv a_1 \pmod{m_1} \\ x \equiv a_2 \pmod{m_2} \end{cases} \]

\(\gcd(m_1, m_2) = 1\)

原理思路

找两个数 \(e_1, e_2\) 使得:

  • \(e_1 \equiv 1 \pmod{m_1}\),且 \(e_1 \equiv 0 \pmod{m_2}\)
  • \(e_2 \equiv 0 \pmod{m_1}\),且 \(e_2 \equiv 1 \pmod{m_2}\)

那么令 \(x = a_1 e_1 + a_2 e_2\),就能满足:

  • \(m_1\)\(x \equiv a_1 \cdot 1 + a_2 \cdot 0 = a_1\)
  • \(m_2\)\(x \equiv a_1 \cdot 0 + a_2 \cdot 1 = a_2\)

如何构造 \(e_1\)

条件:\(e_1 \equiv 1 \pmod{m_1}\)\(e_1 \equiv 0 \pmod{m_2}\)

因为 \(e_1\)\(m_2\) 的倍数,设 \(e_1 = m_2 \cdot t\)

代入第一个条件:

\[m_2 t \equiv 1 \pmod{m_1} \]

由于 \(\gcd(m_2, m_1) = 1\)\(m_2\) 在模 \(m_1\) 下有逆元,记作 \(m_2^{-1}\),则:

\[t \equiv m_2^{-1} \pmod{m_1} \]

取最小正整数 \(t_0\),则 \(e_1 = m_2 \cdot t_0\) 满足要求。

同理,\(e_2 = m_1 \cdot (m_1^{-1} \bmod m_2)\)

例子

\(m_1 = 3,\ m_2 = 5\)

  • \(e_1\):找 \(5t \equiv 1 \pmod{3}\)\(5 \equiv 2\)\(2t \equiv 1 \Rightarrow t \equiv 2\),所以 \(e_1 = 5 \times 2 = 10\)
    \(10 \bmod 3 = 1\)\(10 \bmod 5 = 0\),正确)

  • \(e_2\):找 \(3t \equiv 1 \pmod{5}\)\(3 \times 2 = 6 \equiv 1\)\(t = 2\)\(e_2 = 3 \times 2 = 6\)
    \(6 \bmod 3 = 0\)\(6 \bmod 5 = 1\),正确)

那么解为 \(x = a_1 \times 10 + a_2 \times 6\),模 \(15\) 下唯一。

三、推广到 \(n\) 个模数

对于 \(m_1, m_2, \dots, m_n\) 两两互质。

定义:

  • \(M = m_1 m_2 \cdots m_n\)
  • \(M_i = M / m_i\)(即除了 \(m_i\) 之外其他所有模数的乘积)

我们构造第 \(i\) 个基解 \(e_i\),使其满足:

\[e_i \equiv 1 \pmod{m_i}, \quad e_i \equiv 0 \pmod{m_j}\ (j \neq i) \]

因为 \(e_i\) 必须被所有 \(m_j\ (j \neq i)\) 整除,所以 \(e_i\)\(M_i\) 的倍数,设 \(e_i = M_i \cdot t_i\)

再代入模 \(m_i\) 的条件:

\[M_i t_i \equiv 1 \pmod{m_i} \]

由于 \(M_i\)\(m_i\) 互质(\(m_i\) 与所有 \(m_j\ (j \neq i)\) 互质,所以与它们的乘积也互质),因此 \(M_i\) 在模 \(m_i\) 下可逆。设 \(y_i\)\(M_i\) 的逆元,即:

\[M_i y_i \equiv 1 \pmod{m_i} \]

\(t_i = y_i\),则 \(e_i = M_i y_i\) 就是我们要的基解。

最终解

\[\begin{aligned} x &= a_1 e_1 + a_2 e_2 + \cdots + a_n e_n \\&= \sum_{i=1}^n a_i \cdot M_i \cdot y_i \end{aligned} \]


四、为什么 \(x = \sum a_i M_i y_i\) 是一个特解?

1. 符号回顾

  • 模数 \(m_1, m_2, \dots, m_n\) 两两互质
  • \(M = m_1 m_2 \cdots m_n\)
  • \(M_i = M / m_i\)(即除了 \(m_i\) 以外所有模数的乘积)
  • \(y_i\)\(M_i\) 在模 \(m_i\) 下的逆元:

\[M_i y_i \equiv 1 \pmod{m_i} \]

构造:

\[x = a_1 M_1 y_1 + a_2 M_2 y_2 + \cdots + a_n M_n y_n \]

2. 验证第 \(k\) 个同余式

考虑 \(x \bmod m_k\)

  • \(i = k\)\(a_k M_k y_k\)
    因为 \(M_k y_k \equiv 1 \pmod{m_k}\),所以这一项 \(\equiv a_k \cdot 1 = a_k \pmod{m_k}\)

  • \(i \neq k\)\(a_i M_i y_i\)
    注意 \(M_i = M / m_i\),由于 \(i \neq k\)\(m_k\)\(M_i\) 的一个因子(因为 \(M_i\) 包含了除了 \(m_i\) 以外的所有模数,其中包括 \(m_k\))。
    因此 \(M_i \equiv 0 \pmod{m_k}\),所以整项 \(\equiv 0 \pmod{m_k}\)

加起来:

\[x \equiv a_k + 0 + \cdots + 0 \equiv a_k \pmod{m_k} \]

✅ 对所有 \(k\) 成立,所以 \(x\) 确实是解。

3. 为什么叫“特解”?

因为:

  • 这个 \(x\) 是一个具体的数(可能很大)
  • 所有解可以写成 \(x + tM\)\(t \in \mathbb{Z}\)
  • 所以 \(x\) 只是无穷多解中的一个,称为特解

五、总结

概念 说明
特解 \(x = \sum a_i M_i y_i\) 满足所有同余方程
通解 \(x + tM,\ t \in \mathbb{Z}\)
最小正整数解 \(x \bmod M\)(若为 \(0\) 则取 \(M\)
http://www.jsqmd.com/news/641188/

相关文章:

  • 如何将iCloud备份下载到PC/Mac/iPhone?
  • 汽车制动防抱死模型ABS模型。 基于MATLAB/Simulink搭建电动汽车直线abs模型...
  • Oracle 11g新手避坑指南:从安装到实战SQL查询的全流程解析
  • CLIP-GmP-ViT-L-14惊艳效果:脑电图波形→认知状态/异常放电/临床诊断文本
  • HashMap进阶技巧:解锁高效开发的秘密武器
  • 成都地区攀成钢产无缝钢管(8163-20#;外径42-630mm)现货报价 - 四川盛世钢联营销中心
  • NLP展望
  • 经典标识TAG
  • R语言地理探测器实战:栅格数据预处理与空间分析全流程解析
  • Pypy虚拟环境配置避坑指南:用venv管理依赖,告别与系统Python的冲突
  • 20244118 2025-2026-2 《Python程序设计》实验二报告
  • 51单片机项目避坑指南:心率血氧体温检测系统中那些容易出错的硬件连接与代码细节
  • 029最长递增子序列 动态规划
  • NLP工具
  • 收藏!小白程序员必看:企业AI落地九大坑,助你轻松掌握大模型应用
  • 高效解决企业文档生成的OpenHTMLtoPDF深度指南
  • Flutter运行在安卓机 - -星语
  • 别再死记硬背BERT结构了!用PyTorch手搓一个BERT-Base,带你彻底搞懂MLM和NSP
  • Spyglass之CDC检查入门指南:从约束文件到结果分析
  • 前端工程化实战:项目亮点与技术难点深度解析
  • KeymouseGo终极指南:零代码实现鼠标键盘自动化操作
  • CVPR 2023 DoNet实战:用Python+PyTorch搞定重叠细胞分割(附代码避坑指南)
  • 白帽黑客2026年最新学习攻略,干货满满,不可能学不会了(附资源)!!!
  • Lychee重排序模型效果展示:原始粗排结果vs Lychee精排结果对比可视化
  • 当数据不满足假设时怎么办?Python中Welch方差分析与Games-Howell检验的替代方案
  • 别再为环境变量头疼了!手把手教你用Anaconda搞定DeepKe(附PowerShell激活避坑指南)
  • 第20节:AI 赋能短片创作之 Dify 从0到1部署实战【打造合规、高效的脚本生成工具】
  • 3大核心功能彻底改变你的英雄联盟游戏体验
  • 基于LangGraph与DeepSeek构建多MCP服务协同智能体
  • 告别虚拟机!用WinSniffer v1.5 + MT7921网卡在Windows原生抓取WiFi 6E/7的6GHz报文