數論總結之 中國剩餘定理

2022-05-06 20:15:15 字數 3451 閱讀 6476

我!終於學會孫子定理了!!!!!!!!!!!!!!!!!!!!!!!!!!!

好難啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

qaq中國剩餘定理又名孫子定理。

在了解中國剩餘定理之前,我先放出之前終止了我很長時間的懵逼的一段話。

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

在《孫子歌訣》中給出了解決這個問題的解法:三人同行七十稀,五樹梅花廿一支,七子團圓正半月,除百零五便得知。很是朗朗上口,但這是什麼意思呢?

具體解法分三步:

找出三個數:

1.從3和5的公倍數中找出被7除餘1的最小數15,從3和7的公倍數中找出被5除餘1 的最小數21,最後從5和7的公倍數中找出除3餘1的最小數70。

2.用15乘以2(2為最終結果除以7的餘數),用21乘以3(3為最終結果除以5的餘數),同理,用70乘以2(2為最終結果除以3的餘數),然後把三個乘積相加(15*2+21*3+70*2)得到和233。

3.用233除以3,5,7三個數的最小公倍數105,得到餘數23,即233%105=23。這個餘數23就是符合條件的最小數。

就這麼簡單。我們在感嘆神奇的同時不禁想知道古人是如何想到這個方法的,有什麼基本的數學依據嗎?

這是我在看一篇部落格的時候,博主寫在最前面的一段話。

很多情況下,我們會看不懂部落格最大的原因就是,沒有強大的知識儲備去理解太過空洞的數學推導。

那麼這個時候就需要出現一篇充滿了友好的例子的部落格。【並不指我,是這個

然後在了解什麼是孫子之前【霧,我們先了解乙個有關的知識

乘法逆元

好的

我預設你們已經懂了。

接下來切入正題。

我們將「孫子問題」拆分成幾個簡單的小問題,從零開始,試圖揣測古人是如何推導出這個解法的。

首先,我們假設n1是滿足除以3餘2的乙個數,比如2,5,8等等,也就是滿足3*k+2(k>=0)的乙個任意數。同樣,我們假設n2是滿足除以5餘3的乙個數,n3是滿足除以7餘2的乙個數。

有了前面的假設,我們先從n1這個角度出發,已知n1滿足除以3餘2,能不能使得 n1+n2 的和仍然滿足除以3餘2?進而使得n1+n2+n3的和仍然滿足除以3餘2?

這就牽涉到乙個最基本數學定理,如果有a%b=c,則有(a+kb)%b=c(k為非零整數),換句話說,如果乙個除法運算的餘數為c,那麼被除數與k倍的除數相加(或相減)的和(差)再與除數相除,餘數不變。這個是很好證明的。

我們很顯然可以得到下面的三條結論:

當n1+n2+n3的和滿足除以3餘2,n2和n3是3的倍數。

當n1+n2+n3的和滿足除以5餘3,n1和n3是5的倍數。

當n1+n2+n3的和滿足除以7餘2,n1和n2是7的倍數。

孫子問題解法的本質是從5和7的公倍數中找乙個除以3餘2的數n1,從3和7的公倍數中找乙個除以5餘3的數n2,從3和5的公倍數中找乙個除以7餘2的數n3,再將三個數相加得到解。在求n1,n2,n3時又用了乙個小技巧,以n1為例,並非從5和7的公倍數中直接找乙個除以3餘2的數,而是先找乙個除以3餘1的數,再乘以2.

但是我們要清楚,這個時候我們得到的解並不是最小解。

那麼怎麼才能得到最小解呢?

我們需要了解乙個結論:

如果a%b=c,那麼(a*k)%b=a%b+a%b+…+a%b=c+c+…+c=kc(k>0)。

即如果乙個除法的餘數為c,那麼被除數的k倍與除數相除的餘數為kc。

所以(n1+n2+n3)%105-->3,5,7的公倍數 就是最終的最小解。

好的,那麼我們接下來把它轉換成數學語言。

求解同餘方程

其中m1,m2,..........,mk都是互質的整數,求x的最小非負整數解。

????這都是什麼鬼東西????

假設那麼我們就可以將上面的方程理解為:這個同餘方程組 在模n的意義下有唯一解

。如何證明?【來自官方部落格

什麼鬼東西????【切換部落格ing...

菜雞不配學oi系列。。。

經過乙個小時的艱苦奮鬥,我get到了一篇舉例證明的部落格。證明乙個定理對於蒟蒻來說其實沒必要太嚴謹qaq

首先,假設 x = (n / m1) *y

那麼這個方程就等價於 ( n / m1 ) * y ≡ 1 (mod m1)

即為 ( n / mi ) * yi ≡ 1 ( mod mi )

同理,假設 xi = ( n / mi ) * yi , 就可以構造出原來的方程組(餘數為ai)在模n意義下的唯一解:

x = ∑ ai * xi

剩下的不互質 的數怎麼處理呢?

詳見excrt qaq。

n'>n

'>只要假設 n

'>x=(

n/m1

)∗y'>x = ( n / m1 ) ∗ y

n'>x=(

n/m1

)∗y'>那麼這個方程就等價於求解 ( n / m1 ) ∗ y ≡ 1 (modm1)n

'>x=(

n/m1

)∗y'>

n'>x=(

n/m1

)∗y'>模擬一下就會得到  ( n / mi ) ∗ yi ≡ 1 (modmi)

n'>x=(

n/m1

)∗y'>

n'>x=(

n/m1

)∗y'>同樣的,假設 n

'>x=(

n/m1

)∗y'>xi = ( n / mi ) ∗ yi ,就可以構造出原來的方程組(餘數為a

i'>ai的方程組)在模n

'>n意義下的唯一解:ai

'>n

'>x=∑ ai·xi

ai'>n

'>說完了互質的就不由的想到了:不互質的怎麼辦?ai

'>n

'>那是excrt,之後有時間再說吧。

luogu p1495 曹沖養豬xi

=(n/

mi)∗

yi'>

總結 lucas 定理 中國剩餘定理

先上學習資料 lucas theorem 中國剩餘定理 chinese remainder theorem 組合數取模 acdreamer lucas 定理用來計算組合數模素數。如果素數p可以先確定,則可以o p 預處理,每次計算時間複雜度為 o logp logn 不預處理的時間複雜度,o plo...

中國剩餘定理 擴充套件中國剩餘定理

中國剩餘定理 對於求解一元不定方程組 的一種演算法叫做中國剩餘定理。又名孫子定理。其中m1,m2,m3.mk 為兩兩互質的整數,求x的最小非負整數解 令m mi 1 i n m是所有mi的最小公倍數 ti為同餘方程 ti m mi 1 mod mi 的最小非負整數解 則有乙個解 x ai m mi ...

拓展中國剩餘定理總結

求 large begins equiv b 1 pmod s equiv b 2 pmod cdots s equiv b i pmod cdots s equiv b n pmod end 中 s 的最小值。然而此時並不互質。我們假設前 i 個式子我們求出當前滿足答案的數 m 設 s prod ...