中國剩餘定理又叫孫子定理.孫子算經中有問題:今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物幾何?
首先我們容易知道如果x是這個其中的乙個解,那麼x+140*k也是這裡面的解,140是這三個模的最小公倍數,k是整數.運用這個我們可以把三個式子給合併成兩個式子,進而把解表示成k1*2+k2*3+k3*4.其中k1%3=1且是5,7的最小公倍數,k2%=1且是3和7的最小公倍數,k3%7=2且是3和5的最小公倍數.容易驗證每當除以3,5或7的時候,裡面有兩個為0,剩下乙個和解一樣.因此,改題就變為了如何求k1,k2,k3了.並為了保證最後的結果是最小的,要模上所有模數的最小公倍數
對與k1,k2,k3.我們容易想到用擴充套件歐幾里得演算法取求解,當然也可以用費馬小定理去求.例如求k1我們可以轉換成 35x+3y=1,其中35*x=k1.求法可以參考 逆元求法 同樣的我們可以求出k2,k3.
附上個**:
int
crt(
)return ans%m;
}
中國剩餘定理詳解
中國剩餘定理 孫子算經裡有這樣乙個問題 今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?翻譯成現在的數學問題就是 x 3 2 x 5 3 x 7 2,求x 的值 遇到這這樣乙個問題很多c 語言初學者不禁會想到用暴力可以算出來,還要這樣乙個定理幹嘛?如果資料相當大呢?計算機就會計算...
中國剩餘定理(詳解)
中國剩餘定理可以描述為 若某數x 分別被d1 dn除得的餘數為r1 r2 rn,則可表示為下式 x r1r1 r2r2 rnrn rd 其中r1是d2 d3 dn的公倍數,而且被 d1除,餘數為 1 稱為 r1相對於 d1的數論倒數 r1 r2 rn 是d1 d2 dn 1 的公倍數,而且被 dn除...
中國剩餘定理(詳解)
中國剩餘定理可以描述為 若某數x 分別被d1 dn除得的餘數為r1 r2 rn,則可表示為下式 x r1r1 r2r2 rnrn rd 其中r1是d2 d3 dn的公倍數,而且被 d1除,餘數為 1 稱為 r1相對於 d1的數論倒數 r1 r2 rn 是d1 d2 dn 1 的公倍數,而且被 dn除...