中國剩餘定理詳解

2021-06-22 23:40:56 字數 2052 閱讀 4376

中國剩餘定理

孫子算經裡有這樣乙個問題:「今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?」

翻譯成現在的數學問題就是 x%3 == 2

,x%5 == 3

,x%7 ==  2,求x 

的值;

遇到這這樣乙個問題很多c

語言初學者不禁會想到用暴力可以算出來,還要這樣乙個定理幹嘛?

如果資料相當大呢?計算機就會計算相當困難。然而這個問題早早的就被孫子解決了。

求出3,5,7 

兩兩中的最小公倍數

lcm,

k*lcm

與另乙個數

mod等於

1(找出乙個符合條件的k);

用k*lcm*

另乙個沒有在

lcm中的數的等式的餘數 

[(有點繞)就是 

lcm(3,5),

另乙個數就是7 在

x%7==2 

的等式中的餘數 就是

2 即找出這

k*lcm

(3,5

)*2]

求法(剩餘定理思想):

lcm(3,5) = 15;   // lcm是最小公倍數 

lcm(3,7) = 21;

lcm(5,7) = 35;

a*15%7 == 1;

b*21%5 == 1;

c*35%3 == 1;

可求得a,b,c

的值為1,1,2;

我們可得15%7 == 1 , 21%5 == 1 , 70%3 == 1;

ans = (15*2 + 21*3 + 70*2) % lcm(3,5,7);  

ans = 23;

再加乙個例題:

乙個數被3除餘1

,被4除餘2

,被5除餘4

,這個數最小是幾? 題中

3、4、

5三個數兩兩互質。則〔4

,5〕=20;〔3

,5〕=15;〔3

,4〕=12;〔3

,4,5

〕=60。

為了使20被3

除餘1,用20

×2=40;使

15被4除餘

1,用15×

3=45;使

12被5除餘

1,用12×

3=36。

然後,40×1

+45×2

+36×4=274,

因為,274>60;

所以,274%60 = 34

,就是所求的數。

粘個剩餘定理題

poj 1006 

題目又上角有中文意思

這道題的解法就是: 

已知(ans+d)%23=a;   (ans+d)%28=b;   (ans+d)%33=c

使33×28×x被23除餘1,用33×28×8 = 5544; 

使23×33×y被28除餘1,用23×33×19 = 14421; 

使23×28×z被33除餘1,用23×28×2 = 1288。

於是x==8, y==19, z==2;

因此有(5544×a + 14421×b + 1288×c)% lcm(23,28,33) =ans + d 

又23、28、33互質,即lcm(23,28,33) = 21252;

所以有ans =(5544×a+14421×b+1288×c-d)% 21252

ac**

#include#includeusing namespace std;

int main()

return 0;

}

這個題暴力也能過

暴力ac**

#include#includeusing namespace std;

int main()

printf("case %d: the next triple peak occurs in %d days.\n", cnt++, i-d);

}return 0;

}

中國剩餘定理(詳解)

中國剩餘定理可以描述為 若某數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除...

中國剩餘定理詳解

中國剩餘定理又叫孫子定理 孫子算經中有問題 今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物幾何?首先我們容易知道如果x是這個其中的乙個解,那麼x 140 k也是這裡面的解,140是這三個模的最小公倍數,k是整數 運用這個我們可以把三個式子給合併成兩個式子,進而把解表示成k1 2 k2...