取模運算性質 同餘運算和費馬小定理的證明

2021-10-14 01:31:26 字數 1250 閱讀 7057

sicp 一書 1.2.6 小節提到費馬檢查和費馬小定理,但沒有小定理的證明。此文補充這個證明。

以數學符號來描述,假如

同餘等價符號是三個橫線的等號。另外數學符號a mod n是乙個整體,表示 a 對 n 求模(取餘數),沒有像函式呼叫那樣記成mod(a, n)

同餘有些很好的性質。有加法原理和乘法原理。

mod 運算,可看成是時鐘轉圈,超出一圈又會繞到原來的地方。

在同餘的公式中,經常會出現 mod 運算,似乎很複雜。但只要將 a 看成是跟

等價,公式就會很自然了。

出現 mod 都是為了讓 a 轉幾圈之後,重新落入到 [0, n) 的區間之下。這樣參與運算的數字會在 [0, n) 中,結果也會封閉在 [0, n) 中,永遠不會超出這個範圍。

比如乘法性質,先將 a 看成等價的

, b 看成等價的

,之後再相乘,乘出來的結果再算 mod, 重新落入 [0, n) 區間中。

只要將 a 看成是跟

等價,同餘的很多運算性質幾乎就跟普通整數運算一樣。

**expmod計算冪取模運算,其實應用了同餘的乘法原理。

當 b 為奇數時

當 b 為偶數時

費馬小定理說,當 n 為素數,a < n (或者 a, n 兩者互質)時,有

我們變換一下公式

要證明費馬小定理,先要證明乙個結論。假如 n 是乙個素數,a < n, 這樣排列 1、2、3、4、5 .. n - 1, 乘以 a, 再取 n 的餘數,結果也是 1 到 n - 1 的排列,但是順序會打亂。

舉個例子 n = 5, a = 3。

可以看到,餘數仍然是 1 到 4 之間,沒有重複,只是順序打亂了。

反證法。假如結論不成立的話,就會有 i, j 兩個數字,使得

不妨假設 i > j,將上式移動一下位置,就會有

換句話說,就是 (i - j) * a 可以被 n 整除。而 n 是素數,那麼 (i - j) 或者 a 其中之一就必須包含因子 n。但 (i - j) 和 a 都比 n 要小,顯然不可能包含因子 n。於是結論得證。

上面的證明中,不一定需要 a < n。只要 n 為素數,而 a, n 兩者互質,證明也可成立,費馬小定理也可成立。

因為乘以 a 再 mod n,只是 1 到 n - 1 的重新排列,數字並不會重複。於是我們就可以知道

應用同餘的乘法原理,使用同餘的記號,可以將上式記為

將上式同時除以

,費馬小定理得證

python模運算求餘 取模運算和取餘運算

取模運算和取餘運算 取模運算 modulo operation 和取餘運算 complementation 兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。取模主要是用於 計算機術語中。取餘則更多是數學概念。模運算在數論和程式設計中 都有著廣泛的應用,從奇偶數的判別...

模運算與同餘公式的性質

所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a 6,b 1,d 5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。數學上的記法為 a b mod d 可以看出當n a b mod p a mod p b mod p mod p 1 a b mod p...

模運算與同餘公式的性質

2014年12月02日 10 17 50 翻滾吧挨踢男 閱讀數 5470 標籤 數學基礎 數論演算法 網路安全 更多 個人分類 網路安全數學基礎 所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a 6,b 1,d 5,則我們說a和b是模d同餘的。因為他們都有相同...