初識中國余數定理 (Chinese Remainder Theorem)


初識中國余數定理 (Chinese Remainder Theorem)

中國余數定理介紹

起源:

在《孫子算經》中有這樣一個問題:
“今有物不知其數,三三數之剩二(除以3余2),五五數之剩三(除以5余3),七七數之剩二(除以7余2),問物幾何?”
這個問題稱為“孫子問題”,該問題的一般解法國際上稱為“中國剩余定理”。

解法:

設未知數為X
1. 找到三個數:
    1). 從3和5的公倍數中找到被7除余1的數,15;
    2). 從5和7的公倍數中找到被3除余1的數,70;
    3). 從3和7的公倍數中找到被5除余1的數,21。
2. 用第1步得到的三個數除以響應的余數:
    1). 15乘以2(2為X除以7的余數),30;
    2). 70乘以2(2為X除以3的余數),140;
    3). 21乘以3(3為X除以5的余數),63。
    將三個乘積結果相加,30 + 140 + 63 = 233。
3. 用第2步結果除以三個數的最小公倍數的余數即為所求結果
    X = mod(233,105) = 23

原理:

前提已知:

前提1. if a % b = c, then (a + kb) % b = c;
前提2. if a % b = c, then 2a % 2b = 2c.

則由此

1. 設n1, n2, n3分別為除3, 5, 7分別余2, 3, 2的數,
    1). n1 % 3 = 2;
    2). n2 % 5 = 3;
    3). n3 % 7 = 2.
    則問題變為能否找到數n1+n2+n3滿足條件
    1). (n1+n2+n3) % 3 = 2;
    2). (n1+n2+n3) % 5 = 3;
    3). (n1+n2+n3) % 7 = 2.
2. 可見,當
    1). n2與n3是3的倍數,條件1成立;
    2). n1與n3是5的倍數,條件2成立;
    3). n1與n2是7的倍數,條件3成立。
3. 此時有
    1). n1為5與7的公倍數;
    2). n2為3與7的公倍數;
    3). n3為3與5的公倍數。
4. 結合1中的前提
    1). n1為5與7的公倍數,並且除以3余2,為140;
    2). n2為3與7的公倍數,並且除以5余3,為63;
    3). n3為3與5的公倍數,並且除以7余2,為30。
    PS:注,此時古人采用了已知前提的第二個條件,先求余1數,再乘相應余數值得到想要的數值。
5. n1+n2+n3即為想要的數值,但是這個數值不是最小的滿足條件的數值,此時利用已知前提1,可以得到
    (n1+n2+n3) = 140+62+30 = 233;
    233對3,5,7的最小公倍數105取模得到最終結果
    233 % 105 = 23.

用途:頻率估計?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM