中国剩余定理

中国剩余定理

注:文章所以未知数都定义为自然数。

前言

好好好,开始上衔接了。第一节数学课老师给我们了一道题“一些猴子吃桃子,如果有2个猴子剩1个桃子;如果有3个猴子剩2个桃子;如果有5个猴子剩4个桃子;如果有7个猴子剩6个桃子;如果有11个猴子剩10个桃子。” 一眼顶针被评价为 lyz 狂喜——中国剩余定理练习题。

正文

前置芝士

取模

众所周知。在除法中 a ÷ b = c ⋯ d a \div b = c \cdots d a÷b=cd 于是我们新定义一个符号 “%” 称之为模(取余)。对于 x ÷ y = z ⋯ n x \div y = z \cdots n x÷y=zn 则有 x % y = n x \% y = n x%y=n

众所周知。余数具有可加性,所以取模亦有可加性,具体的形如:

a % b = n , c % b = m a \% b = n , c \% b = m a%b=n,c%b=m

( a + c ) % b = ( n + m ) % b (a + c) \% b = (n + m) \%b (a+c)%b=(n+m)%b

模系与同余

就是在同意取模下含义的数的式子例如同余,同余形如 a = b ( m o d c ) a = b \pmod c a=b(modc) 。对于 x % y = n x \% y = n x%y=n 则有 x = n ( m o d y ) x = n \pmod y x=n(mody)

逆元

对于 a 在模数为 m 的模系中的逆元记为 a’ ,代表 a ⋅ a ′ = 1 ( m o d m ) a \cdot a' = 1 \pmod m aa=1(modm)

逆元于模系是绑定的,只有在模系中才会出现逆元。

根据定义式子,我们可以将逆元感性理解为倒数。

引例

其实前言中的练习题就是同余式子 ”如果有2个猴子剩1个桃子“。

将问题简化为 ”如果有2个猴子剩1个桃子;如果有3个猴子剩2个桃子;如果有5个猴子剩4个桃子“。

我们设:桃子的数量为 n n n

原式子相当于 n ÷ 2 = k ⋯ 1 n \div 2 = k \cdots 1 n÷2=k1

则这个式子可以写为 n = 1 ( m o d 2 ) n = 1 \pmod 2 n=1(mod2)

同理每个式子可以写为同余的形式如:

n = 2 ( m o d 3 ) n = 2 \pmod 3 n=2(mod3)
n = 4 ( m o d 5 ) n = 4 \pmod 5 n=4(mod5)

我们要构造一个数满足所有条件,可以利用前面的可加性,将问题差分。

假设 :

a = x ( m o d 2 ) a = x \pmod 2 a=x(mod2)
a = y ( m o d 3 ) a = y \pmod 3 a=y(mod3)

b = n ( m o d 2 ) b = n \pmod 2 b=n(mod2)
b = m ( m o d 3 ) b = m \pmod 3 b=m(mod3)

则 :

a + b = x + n ( m o d 2 ) a + b = x + n \pmod 2 a+b=x+n(mod2)
a + b = y + m ( m o d 3 ) a + b = y + m \pmod 3 a+b=y+m(mod3)

我们可以考虑将原有的三个条件拆成三个数相加,让每个数满足其中一个同余式。

如下表:


下面问题就转化为了如何构造一个数,使得其模系为其他要求的式子的模数同余 0 ,而对满足其中的一个式子。

考虑模系的意义,我们将一个数 x x x 可以质因数拆解为 p 1 ⋅ p 2 ⋯ p n p_1 \cdot p_2 \cdots p_n p1p2pn

如果 其有一个因子为模数则,这个数个在这个同余系中一定同余 0 0 0

如果这样不好理解,则可以理解为

因为 对于 x ÷ y = z ⋯ n x \div y = z \cdots n x÷y=zn 则有 x % y = n x \% y = n x%y=n

当 y 是 x 因子则式子一定整除,即余数 n = 0 n = 0 n=0

所以在同余系中为0。

所以我们可以让构造的第一个数 中包好 p 1 = 3 , p 2 = 5 p_1 = 3 , p_2 = 5 p1=3,p2=5

这样不管这个数乘任何自然数,都会满足使得其它式子同余 0.

我们考虑如和实现满足其中一个式子,还是第一个式子。

根据逆元的定义,我们考虑先让构造的数 同余 2 余 1 再成乘以 1。

所以我们就可以构造出第一个数了

S = 2 ⋅ 3 ⋅ 5 S = 2 \cdot 3 \cdot 5 S=235

A 1 = S 2 ⋅ ( S 2 ) ′ ( m o d 2 ) ⋅ 1 A_1 = \frac S 2 \cdot (\frac S 2)'\pmod 2 \cdot 1 A1=2S(2S)(mod2)1

于是我们构造出第一个数。

二三个数以此类推分别为:

A 2 = S 3 ⋅ ( S 3 ) ′ ( m o d 3 ) ⋅ 2 A_2 = \frac S 3 \cdot (\frac S 3)'\pmod 3 \cdot 2 A2=3S(3S)(mod3)2
A 3 = S 5 ⋅ ( S 5 ) ′ ( m o d 5 ) ⋅ 4 A_3 = \frac S 5 \cdot (\frac S 5)'\pmod 5 \cdot 4 A3=5S(5S)(mod5)4

最后我们将三个数求和

则构造出一个合法的数字满足这道题所有条件。

通解

我们将问题普遍化

对于同余式

k = a 1 ( m o d m 1 ) k = a_1 \pmod {m_1} k=a1(modm1)
k = a 2 ( m o d m 2 ) k = a_2 \pmod {m_2} k=a2(modm2)
⋯ \cdots
k = a n ( m o d m n ) k = a_n \pmod {m_n} k=an(modmn)

还是将答案拆分 n 个数的和, A i A_i Ai 满足第 i 个式子

S = m 1 ⋅ m 2 ⋯ m n S = m_1 \cdot m_2 \cdots m_n S=m1m2mn

例如第一个式子 A 1 A_1 A1 使其除了第一个式子都满足同余 0,所以使 A 1 = S m 1 ⋅ p A_1 = \frac S {m_1} \cdot p A1=m1Sp

使得其满足第一个式子则令 A 1 = S m 1 ⋅ ( S m 1 ) ′ ( m o d m 1 ) ⋅ a 1 A_1 = \frac S {m_1} \cdot (\frac S {m_1})' \pmod {m_1} \cdot a_1 A1=m1S(m1S)(modm1)a1

对于第 i 个式子则为:

A i = S m i ⋅ ( S m i ) ′ ( m o d m i ) ⋅ a i A_i = \frac S {m_i} \cdot (\frac S {m_i})' \pmod {m_i} \cdot a_i Ai=miS(miS)(modmi)ai

最终构造的答案就是将所有数加起来,形式化的说

A = ∑ i = 1 n S m i ⋅ ( S m i ) ′ ( m o d m i ) ⋅ a i A = \sum ^ n _ {i=1} \frac S {m_i} \cdot (\frac S {m_i})' \pmod {m_i} \cdot a_i A=i=1nmiS(miS)(modmi)ai

要特别注意的是,这个式子的成立要满足 任意两个模数互质,否则不能使用上述方法构造 每一个 A i A_i Ai,如果不互质则可以利用拓展剩余定理(待填坑)。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值