zoukankan      html  css  js  c++  java
  • 中国剩余定理(CRT)

    中国剩余定理,是用来求形如下面这样的同余方程组的 最小正整数解 的:

    [left{ egin{array}{ll} x equiv a_1 pmod{m_1} \ x equiv a_2 pmod{m_2} \ cdots \ x equiv a_n pmod{m_n} \ end{array} ight. ]

    其中,(m_1,m_2,cdots,m_n) 两两互质。

    出处

    这玩意原本出自《孙子算经》卷下第二十六题:“有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?”

    解法

    我们设

    [M = prodlimits_{i=1}^n m_i,M_i = frac{M}{m_i} ]

    然后,设 (t_i)(M_i) 在模 (m_i) 意义下的逆元,即 (M_i t_i equiv 1 pmod{m_i})
    对于上面的 (i)(1 le i le n)
    然后,我们就可以构造出任意解

    [x_0 = sumlimits_{i=1}^n a_i M_i t_i ]

    最小正整数解就是

    [x_{min} = x_0 mod M ]

    证明

    这玩意的证明其实挺简单的……
    首先,对于任意一个 (j)((1 le j le n)(j ot= i))

    [a_j M_j t_j equiv 0 pmod{m_i} ]

    这是显然的,因为(m_i)(M_j) 的因数。
    然后,有

    [a_i M_i t_i equiv a_i pmod{m_i} ]

    这也很明显……因为 (M_i t_i equiv 1 pmod(m_i)) 嘛。
    于是,我们把所有的 (a_i M_i t_i) 加起来,也就是 (x_0),再结合上面的两个结论,就可以得到

    [x_0 equiv a_i pmod{m_i} ]

    符合题意。

  • 相关阅读:
    复杂网络研究的委员老师信息总合
    numpy读取本地数据和索引
    numpy数组的计算
    numpy数组的创建
    python画图的工具及网站
    matplotlib直方图
    matplotlib.legend()函数用法
    matplotlib条形图
    matplotlib散点图
    matplotlib折线图
  • 原文地址:https://www.cnblogs.com/mk-oi/p/13700036.html
Copyright © 2011-2022 走看看