Day 27 - 欧几里得算法与中国剩余定理
1|0欧几里得定理
前面写过了。
2|0中国剩余定理
2|1引入
「物不知数」问题:有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
即求满足以下条件的整数:除以
该问题最早见于《孙子算经》中,并有该问题的具体解法。宋朝数学家秦九韶于 1247 年《数书九章》卷一、二《大衍类》对「物不知数」问题做出了完整系统的解答。上面具体问题的解答口诀由明朝数学家程大位在《算法统宗》中给出:
三人同行七十希,五树梅花廿一支,七子团圆正半月,除百零五便得知。
2|2定义
中国剩余定理 (Chinese Remainder Theorem, CRT) 可求解如下形式的一元线性同余方程组(其中
上面的「物不知数」问题就是一元线性同余方程组的一个实例。
2|3过程
- 计算所有模数的积
; - 对于第
个方程:- 计算
; - 计算
在模 意义下的逆元 ; - 计算
(不要对 取模)。
- 计算
- 方程组在模
意义下的唯一解为: 。
2|4实现
2|5证明
我们需要证明上面算法计算所得的
当
即对于任意
因为我们没有对输入的
另外,若
故系数列表
2|6解释
下面演示 CRT 如何解「物不知数」问题。
;- 三人同行 七十 希:
,故 ; - 五树梅花 廿一 支:
,故 ; - 七子团圆正 半月:
,故 ; - 所以方程组的唯一解为
。(除 百零五 便得知)
2|7Garner 算法
例如,若
我们可以用以下形式的式子(称作
令
把
代入第二个方程得出:
方程两边减
类似地,我们可以得到:
实现:
该算法的时间复杂度为
可以发现在第六行中的计算过程对应上述混合基数的表示。
2|8应用
某些计数问题或数论问题出于加长代码、增加难度、或者是一些其他原因,给出的模数:不是质数!
但是对其质因数分解会发现它没有平方因子,也就是该模数是由一些不重复的质数相乘得到。
那么我们可以分别对这些模数进行计算,最后用
下面这道题就是一个不错的例子。
给出
首先,当
否则,根据欧拉定理,可知所求为:
现在考虑如何计算:
因为
注意到
也就是说,我们实际上要求下面一个线性方程组的解:
而计算一个组合数对较小的质数取模后的结果,可以利用卢卡斯定理。
2|9扩展:模数不互质的情况
两个方程
设两个方程分别是
将它们转化为不定方程:
由裴蜀定理,当
其他情况下,可以通过扩展欧几里得算法解出来一组可行解
则原来的两方程组成的模方程组的解为
多个方程
用上面的方法两两合并即可。
2|10习题
本页面部分内容译自博文 Китайская теорема об остатках 与其英文翻译版 Chinese Remainder Theorem。其中俄文版版权协议为 Public Domain + Leave a Link;英文版版权协议为 CC-BY-SA 4.0。
__EOF__

本文链接:https://www.cnblogs.com/So-noSlack/p/18340005.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:So_noSlack,转载请注明原文链接:https://www.cnblogs.com/So-noSlack/p/18340005
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)