中国剩余定理(Chinese Remainder Theorem)在初中数学的应用
在学习CRT之前,我们先来了解逆元我们先看定义:对于非零整数ama, mam,如果存在bbb使得a×b≡1modma×b≡1modm,就称bbb是aaa在模mmm意义下的逆元(inverse)。555是333在模777意义下的逆元,3×515≡1mod73×515≡1mod7。在模意义下,我们记上文中的bbb为a−1a ^ {-1}a−1(即aaa的模倒数。
引入
考试的原题忘了,那么我们先来看一个古老的问题:
有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?
即求满足以下条件的整数:除以333余222,除以555余333,除以777余222。
该问题最早见于《孙子算经》中,并有该问题的具体解法。
宋朝数学家秦九韶于124712471247年《数书九章》卷一、二《大衍类》对此类问题做出了完整系统的解答。
上面具体问题的解答口诀由明朝数学家程大位在《算法统宗》中给出:
三人同行七十希,五树梅花廿一支,七子团圆正半月,除百零五便得知。
口胡一下,大概是:2×70+3×21+2×15=233=2×105+232 \times 70 + 3 \times 21 + 2 \times 15 = 233 = 2 \times 105 + 232×70+3×21+2×15=233=2×105+23,故答案为232323。
可是为什么呢?我们可以用浅显的初等数论 + 线性方程组来解答。
数学定义
逆元
在学习CRT之前,我们先来了解逆元:
我们先看定义:
对于非零整数a,ma, ma,m,如果存在bbb使得a×b≡1(modm)a \times b\equiv 1\pmod ma×b≡1(modm),就称bbb是aaa在模mmm意义下的逆元(inverse)。
例如:555是333在模777意义下的逆元,3×5=15≡1(mod7)3 \times 5 = 15 \equiv 1 \pmod 73×5=15≡1(mod7)。
在模意义下,我们记上文中的bbb为a−1a ^ {-1}a−1(即aaa的模倒数)
对于求逆元,有一种快速的方法(费马小定理),但我更推荐枚举,毕竟你们不是计算机。
回到正题
中国剩余定理可以用来求解形如以下形式的线性同余方程(其中n1,n2,…,nkn_1, n_2, \dots, n_kn1,n2,…,nk两两互质):
{x≡a1(modm1)x≡a2(modm2)⋮x≡ak(modmk) \begin{cases} x \equiv a_1 \pmod {m_1} \\ x \equiv a_2 \pmod {m_2} \\ \vdots \\ x \equiv a_k \pmod {m_k} \end{cases} ⎩
⎨
⎧x≡a1(modm1)x≡a2(modm2)⋮x≡ak(modmk)
其中,x≡ai(modmi)x \equiv a_i \pmod {m_i}x≡ai(modmi)表示aia_iai是x÷mix \div m_ix÷mi的余数,例如5≡1(mod2)5 \equiv 1 \pmod 25≡1(mod2)。
开始解答
欧买噶的,你竟然学会同余线性方程组了!超越了LLL!
那么,来求xxx吧:
- 首先,计算∏i=1kmi\prod_{i = 1}^{k} m_i∏i=1kmi,即所有nin_ini的乘积,记为mmm(不带下标)
- 接着,对于第iii个方程:
- 计算bi=mmib_i = \frac{m}{m_i}bi=mim,即除nin_ini之外所有njn_jnj的乘积
- 计算bib_ibi在模mim_imi意义下的逆元(不记得翻回去看),记为bi−1b_i^{-1}bi−1
- 计算ci=bi×bi−1c_i = b_i \times b_i^{-1}ci=bi×bi−1,此时不对mim_imi取模
- 最后,该线性方程在模nnn意义下的唯一解为:x=∑i=1kai×ci(modmi)x = \sum_{i = 1}^{k} a_i \times c_i \pmod {m_i}x=∑i=1kai×ci(modmi),即xxx等于所有ai×cia_i \times c_iai×ci的和。
回到题目,提取题目中的同余方程组为:
{x≡2(mod3)x≡3(mod5)x≡3(mod7) \begin{cases} x \equiv 2 \pmod 3 \\ x \equiv 3 \pmod 5 \\ x \equiv 3 \pmod 7 \end{cases} ⎩
⎨
⎧x≡2(mod3)x≡3(mod5)x≡3(mod7)
易得,n=105n = 105n=105
以x≡2(mod3)x \equiv 2 \pmod 3x≡2(mod3)为例,我们计算一下:
b=n3=35b = \frac{n}{3} = 35b=3n=35。
此时,1×35≡2(mod3),2×35≡1(mod3)1 \times 35 \equiv 2 \pmod 3, 2 \times 35 \equiv 1 \pmod 31×35≡2(mod3),2×35≡1(mod3),即b−1=2b ^ {-1} = 2b−1=2,则c=70c = 70c=70
以此类推,我们算得,答案为2×35+1×21+1×15=233≡23(mod105)2 \times 35 + 1 \times 21 + 1 \times 15 = 233 \equiv 23 \pmod{105}2×35+1×21+1×15=233≡23(mod105),所以答案最小为232323。
可以撒花了。
证明
这里空间还蛮大的,写一写证明吧!
正确性保证
由式子x≡∑i=1kai×ci(modm)x \equiv \sum_{i = 1}^{k} a_i \times c_i \pmod {m}x≡∑i=1kai×ci(modm),得:
x≡∑i=1kai×ci(modm)≡∑i=1kai×bi×(bi−1(modmi))(modm)≡∑i=1kai(modm) \begin{aligned} x &\equiv \sum_{i = 1}^{k} a_i \times c_i &\pmod {m}\\ &\equiv \sum_{i = 1}^{k} a_i \times b_i \times (b_i^{-1} \pmod {m_i}) &\pmod {m}\\ &\equiv \sum_{i = 1}^{k} a_i &\pmod m \end{aligned} x≡i=1∑kai×ci≡i=1∑kai×bi×(bi−1(modmi))≡i=1∑kai(modm)(modm)(modm)
这样就满足对于每一个iii其对应的方程,xxx都是成立的。
最优性保证(相当于正确性保证)
口胡一下吧,似乎挺严格:
首先,模意义下的答案具有唯一性:
因为如果存在x≠yx \neq yx=y,则必然存在mim_imi满足x,yx, yx,y不同余。
又因为x<mx < mx<m(余数一定小于除数),
所以xxx一定是满足所有条件的方程组当中最小的。
完结,撒花★,°:.☆( ̄▽ ̄)/$:.°★ 。
更多推荐



所有评论(0)