中國剩餘定理學習筆記

2021-09-25 19:27:20 字數 2543 閱讀 4828

先看一道poj上的題目:【poj1006】 biorhythms

人自出生起就有體力,情感和智力三個生理週期,分別為23,28和33天。乙個週期內有一天為峰值,在這一天,人在對應的方面(體力,情感或智力)表現最好。通常這三個週期的峰值不會是同一天。現在給出三個日期,分別對應於體力,情感,智力出現峰值的日期。然後再給出乙個起始日期,要求從這一天開始,算出最少再過多少天後三個峰值同時出現。

首先我們要知道,任意兩個峰值之間一定相距整數倍的週期。假設一年的第n天達到峰值,則下次達到峰值的時間為$$($$是週期,$$是任意正整數)。所以,三個峰值同時出現的那一天$$應滿足$$$$

$$分別為為體力,情感,智力出現峰值的日期, $$分別為體力,情感,智力週期。 我們需要求出$$三個非負整數使上面的等式成立。

想直接求出$$貌似很難,但是我們的目的是求出$$, 可以考慮從結果逆推。根據上面的等式,$$滿足三個要求:除以$$餘數為$$,除以$$餘數為$$,除以$$餘數為$$。這樣我們就把問題轉化為求乙個最小數,該數除以$$餘$$,除以$$餘$$,除以$$餘$$。這就是著名的中國剩餘定理,我們的老祖宗在幾千年前已經對這個問題想出了乙個精妙的解法。依據此解法的演算法,時間複雜度可達到$$。 

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

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

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

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

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

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

首先,我們假設$$是滿足除以3餘2的乙個數,比如2,5,8等等,也就是滿足$$的乙個任意數。同樣,我們假設$$是滿足除以5餘3的乙個數,$$是滿足除以7餘2的乙個數。

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

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

以此定理為依據,如果$$是3的倍數,$$就依然滿足除以3餘2。同理,如果$$也是3的倍數,那麼$$的和就滿足除以3餘2。這是從$$的角度考慮的,再從$$,$$的角度出發,我們可推導出以下三點:

為使$$的和滿足除以3餘2,$$和$$必須是3的倍數。

為使$$的和滿足除以5餘3,$$和$$必須是5的倍數。

為使$$的和滿足除以7餘2,$$和$$必須是7的倍數。

因此,為使$$的和作為「孫子問題」的乙個最終解,需滿足:

$$除以3餘2,且是5和7的公倍數。

$$除以5餘3,且是3和7的公倍數。

$$除以7餘2,且是3和5的公倍數。

所以,孫子問題解法的本質是從5和7的公倍數中找乙個除以3餘2的數$$,從3和7的公倍數中找乙個除以5餘3的數$$,從3和5的公倍數中找乙個除以7餘2的數$$,再將三個數相加得到解。在求$$,$$,$$時又用了乙個小技巧,以$$為例,並非從5和7的公倍數中直接找乙個除以3餘2的數,而是先找乙個除以3餘1的數,再乘以2。也就是先求出5和7的公倍數模3下的逆元,再用逆元去乘餘數

這裡又有乙個數學公式,如果$$,那麼$$,也就是說,如果乙個除法的餘數為$$,那麼被除數的$$倍與除數相除的餘數為$$。展開式中已證明。

最後,我們還要清楚一點,$$只是問題的乙個解,並不是最小的解。如何得到最小解?我們只需要從中最大限度的減掉掉3,5,7的公倍數105即可。道理就是前面講過的定理「如果$$,則有$$」。所以$$就是最終的最小解。

這樣一來就得到了中國剩餘定理的公式:

設正整數

有整數解。並且在模

其中

普通的中國剩餘定理要求所有的這種情況就採用兩兩合併的思想,假設要合併如下兩個方程:

那麼得到:

我們需要求出乙個最小的$$使它滿足:

那麼$$和$$就要盡可能的小,於是我們用擴充套件歐幾里得演算法求出$$的最小正整數解,將它代回$$,得到$$的乙個特解$$,當然也是最小正整數解。

所以$$的通解一定是$$加上$$,這樣才能保證$$模$$和$$的餘數是$$和$$。由此,我們把這個$$當做新的方程的餘數,把$$當做新的方程的模數。(這一段是關鍵

合併完成:

中國剩餘定理學習筆記

上次jt暑假講的時候我數學太弱並沒有聽懂qwq。假設有方程組 mi 兩兩互質 x ai m odmi 令 m i 1nmi wi mmi 易知有 gc d wi mi 1下一步求出pi 使得 wi pi 1 mo dmi 這個時候x的乙個解可以表示為 x i 1 nwi pi a i 為什麼x可行呢...

中國剩餘定理學習筆記

先看一道poj上的題目 poj1006 biorhythms 人自出生起就有體力,情感和智力三個生理週期,分別為23,28和33天。乙個週期內有一天為峰值,在這一天,人在對應的方面 體力,情感或智力 表現最好。通常這三個週期的峰值不會是同一天。現在給出三個日期,分別對應於體力,情感,智力出現峰值的日...

中國剩餘定理 學習筆記

目錄中國剩餘定理 chinese remainder theorem 簡稱crt。crt可以求解乙個這樣的方程組的最小解 left x equiv b 1 pmod x equiv b 2 pmod x equiv b 3 pmod vdots x equiv b k pmod end right....