• 对中国剩余定理的一点理解


    网上只说了CRT的证明过程,但我这样的蒟蒻全程只是跟着题解思路跑,但是没理解这个证明过程是怎么想到的,最近想了一下,这样CRT的推导就比较自然了
    一般形式:

    \[ \begin{cases} & {x_{1} \equiv a_{1} \text {mod} m_{1} } \\ & {x_{2} \equiv a_{2} \text {mod} m_{2} } \\ &...\\ & x_{n} \equiv a_{n} \text {mod} m_{n} \end{cases} \]

    第一步:构造一个特殊解
    为了简单,我们假设最终的解由满足对应方程的解的几个部分组成
    \(y_1\) \(y_2\) ... \(y_n\) 分别满足对应的方程组
    一眼看穿法可得
    那么为了保证加起来之后的模数不改变,\(y_i\) 以外的部分对第 \(i\) 个方程组的贡献为 \(0\)
    \(y_j(j \neq i) \equiv 0 (\text{mod }m_i)\)
    根据同余和整除的转化
    所有的 \(y_j\) 均为 \(m_i\) 的倍数
    这时候一个很明显的idea就来了:
    \(a_i\) 显然是第 \(i\)个方程组的一个解
    为了让 \(a_i\) 满足是其它模数的倍数
    \(a_i\) 乘以\(m_j(j \neq i)\)
    但是这样又会出来一个问题:现在\(a_i \times m_j\)不一定满足第 \(i\)个方程了
    那么整出来一个逆元即可,
    \(y_i = {a_i} \times {m_j} \times {m_j^-1}(\text{mod } m_i)\)
    最后的解就是所有的\(y_i\)之和了

    严谨证明见百度百科

    第二步:构造一个通解,顺便证明这就是通解
    充分性:存在解,则为这种形式
    假设\(x_1\) \(x_2\)均满足上述方程组
    \(x_1\) \(x_2\)在模上述数时同余,即在\(m_i\) 整除\(x1-x2\)
    则根据同余定理5:
    \(a \equiv b (mod m)\), \(a \equiv b (mod n)\)
    \(a \equiv b (mod lcm(m,n))\)
    \(M\)\(m_i\)之乘积
    由于任意模数互质,所以\(x1 \equiv x2 (mod M)\)
    所以\(x = kM+x0\)
    必要性:若为这种形式,则为解
    \(kM\)对每个方程组的贡献为\(0\),必要性显然
    推论:在\((mod M)\)意义下只有一个唯一解

    exCRT和CRT的共同点很少,只不过都用到了同余性质5:
    \(a \equiv b (mod m)\), \(a \equiv b (mod n)\)
    \(a \equiv b (mod lcm(m,n))\)
    把这个式子反复应用,就是exCRT
    exCRT的逆命题也是成立的,正确性显然
    \(d = gcd(m,n)\)
    \(m' = m/d, n' = n/d\)
    \(m'n'd'|a-b\)
    \(m'd'|a-b\)\(n'd'|a-b\)
    所以同余性质5是等价条件

  • 相关阅读:
    CXF整合Spring之JaxWsProxyFactoryBean调用
    js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本
    Python hypot() 函数
    Python cos() 函数
    Python atan2() 函数
    Python asin() 函数
    Python atan() 函数
    Python acos() 函数
    Python uniform() 函数
    Python shuffle() 函数
  • 原文地址:https://www.cnblogs.com/cdsidi/p/15555242.html
Copyright © 2020-2023  润新知