中国剩余定理(新)

定理内容

中国剩余定理(孙子定理),这是用来解出一堆线性同余方程组同一解的定理,通常会给出一对同余方程。如下,其中任意两个 m i mi mi 互质,求解 x x x
x ≡ a 1 ( m o d m 1 ) x ≡ a 2 ( m o d m 2 ) x ≡ a 3 ( m o d m 3 ) … x ≡ a n ( m o d m n ) \begin{aligned} x &\equiv a_1 \pmod {m_1} \\ x & \equiv a_2 \pmod {m_2} \\ x & \equiv a_3 \pmod {m_3} \\ & \dots \\ x & \equiv a_n \pmod {m_n} \end{aligned} xxxxa1(modm1)a2(modm2)a3(modm3)an(modmn)

在定理中设有几个变量 M , M i , t i M,M_i,t_i M,Mi,ti,对于他们有关系
M = m 1 × m 2 × m 3 × ⋯ × m n M i = M ÷ m i M i × t i ≡ 1 ( m o d m i ) \begin{aligned} &M = m_1 \times m_2 \times m_3 \times \dots \times m_n \\ &M_i = M \div m_i \\\\ &M_i \times t_i \equiv 1 \pmod {m_i} \end{aligned} M=m1×m2×m3××mnMi=M÷miMi×ti1(modmi)
可以看出,其中 t i t_i ti M i M_i Mi 关于 m i m_i mi 的逆元。而 x x x
x = ∑ i = 1 n a i × M i × t i x = \sum^{n}_{i = 1} a_i \times M_i \times t_i x=i=1nai×Mi×ti

证明

由上面我们可以知道,中国剩余定理是通过构造来得到一组解, 因此只需要证明可行性即可。

你可以尝试带入进去。比如这里带入第一个式子 x ≡ a 1 ( m o d m 1 ) x \equiv a_1 \pmod {m_1} xa1(modm1)。因为 x x x 中除了第 1 1 1 项, 其他所有的 a i × M i × t i a_i \times M_i \times t_i ai×Mi×ti 中的 M i M_i Mi 里面都有 m 1 m_1 m1 这个因子,那么其他项就可以被取模 m 1 m_1 m1 给完美消掉,只剩下第一项 a 1 × M 1 × t 1 a_1 \times M_1 \times t_1 a1×M1×t1

又因为 M i × t i ≡ 1 ( m o d m ) i M_i \times t_i \equiv 1 \pmod m_i Mi×ti1(modm)i, 那么M1 * t1 在取模 m 1 m_1 m1 下就为 1 1 1 ,那么就只剩下 a 1 a_1 a1,符合等式 1 1 1,对于其他的等式同理, 这就说明,这是一个正确解。

关于 t i t_i ti 一定有解。
因为
M i × t i ≡ 1 ( m o d m i ) M i = M ÷ m i gcd ⁡ ( m i , m j ) = 1 , i ≠ j \begin{aligned} &M_i \times t_i \equiv 1 \pmod {m_i} \\ &Mi = M \div m_i \\ &\gcd(m_i,m_j) = 1,i \not = j \end{aligned} Mi×ti1(modmi)Mi=M÷migcd(mi,mj)=1,i=j
通过裴蜀定理可得式子
M i × x + m i × y = 1 M_i \times x + m_i \times y = 1 Mi×x+mi×y=1
M i × t i ≡ 1 ( m o d m i ) M_i \times t_i \equiv 1 \pmod {m_i} Mi×ti1(modmi),可以化成等式 M i × t i + m i × y = 1 M_i \times t_i + m_i \times y = 1 Mi×ti+mi×y=1
那么 M i × x + m i × y = 1 M_i \times x + m_i \times y = 1 Mi×x+mi×y=1 中的 x x x 就是 t i t_i ti M i × x + m i × y = 1 M_i\times x + m_i \times y = 1 Mi×x+mi×y=1 存在,等式 M i × t i + m i × y = 1 M_i \times t_i + m_i \times y = 1 Mi×ti+mi×y=1 就一定存在, x x x 一定有解,即 t i t_i ti 一定有解,那么 t i t_i ti 就一定可以通过 exgcd 求出。

值得一提的是 M M M 是所有 m i m_i mi 的乘积,那么通解应该也就知道了,即 x = x 0 + k × M x = x_0 + k \times M x=x0+k×M
x x x 加上 k k k M M M 不影响每个 m i m_i mi 取余,它还是 a i a_i ai,也就都是合法解。(这里有多组解的原因也是, 有 n n n 个式子但能找出来 n + 1 n + 1 n+1 个未知数(把同余方程列乘等式),因此有无数解)

所以最小正整数解就是用代码就是 (x % M + M) % M

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值