素數是數論中最為關心的基礎,基本上所有的數論書籍都是圍繞素數展開。
整數p>1是素數當且僅當它的因子只有 ±1 和 ±p。
任意整數a>1都可以唯一地因子分解為 a = p1a1 * p2a2 * …… *ptat,其中 p1 p2 pt 都是素數,且 p1 <p2<……< pt ,所有的ai都是正整數。
即任意的正整數a可唯一地表示為 a = ∏ pap 其中每一個ap ≥ 0 ,比如整數12 = { a2 = 2, a3 = 1},整數91 ={ a7 = 1, a13 = 1}
兩數相乘即對應地指數相加。設 a = ∏ pap b = ∏ pbp ,定義k = ab。 k可以表示為 k = ∏ pkp ,kp = ap + bp
例如 k = 12 * 18 = ( 2^2 * 3 ) * ( 2 * 3^2 ) = 2^3 * 3^3 = 216 。k2 = a2 + b2 = 2 + 1, k3 = a3 + b3 = 1 + 2
1.1 費馬定理
若p是素數,a是正整數且不能被p整數,則 ap-1 ≡ 1 mod p ,也可以用另一種形式表示 ap ≡ a mod p
比如 35 = 243 =3 mod 5 = a mod p
1.2 歐拉函數
歐拉函數 Φ(n),指的是小於n且與n互素地正整數的個數。一般Φ(1) = 1。
顯然對於素數p, Φ(p) = p - 1
假設有兩個素數p和q,p ≠ q,那么對於 n = pq, Φ(n) = Φ(pq) = Φ(p) * Φ(q) = (p -1)* (q - 1)
1.3 歐拉定理
歐拉定理說明,對任意的互素的a和n,有 a Φ(n) ≡ 1 mod n ,也可以用另一種形式表示 a Φ(n)+1 ≡ a mod n
1.4 中國剩余定理CRT
令M = ∏ mi,1 ≤ i ≤ k
其中mi是兩兩互素的,我們可以將ZM中任一整數對應一個k元組,該k元組的元素均在Zmi中,這種對應關系為 A ↔ (a1,a2,……,ak),A∈ZM,對於1 ≤ i ≤ k,ai∈ZM,且 ai = A mod mi
對於A ↔ (a1,a2,……,ak),B ↔ (b1,b2,……,bk),(A * B) mod M ↔ (a1*b1 mod m1 ,a2 * b2 mod m2,……,ak * bk mod mk)
中國剩余定理的用途之一就是可以使得模M的大數運算轉化到更小的數上操作
比如 A = 973 mod M = 1813 = 37 * 49 = m1 * m2,Mi = M / mi,則 M1 = 49,M2 =37
973 mod 37 = 11,973 mod 49 = 42,所以973可以表示為 (11,42)
如果此時有678 + 973 mod 1813,則可以通過678 ↔ (678 mod 37,678 mod 49) ↔ (12,41) ,(11 + 12 mod 37,42 + 41 mod 49)= (23,24)↔ a1M1M1-1 + a2M2M2-1 mod M ↔ 23 * 49 * 34 + 34 * 37 *4 mod 1813 = 43350 mod 1813 = 1651,其中M1是M1模m1的乘法逆,即M1-1 = 34 mod M1
如果此時有73 * 1651 mod 1813,先73 * (23,24) ↔ (73 * 23 mod 37,73 * 24 mod 49)=(14,32)
(14,32) ↔ 14 * 49 * 34 + 32 * 37 * 4 mod 1813 = 856 = 1651 * 73 mod 1813
1.5 離散對數
1.5.1 模n的整數冪
根據歐拉定理 a Φ(n) ≡ 1 mod n,其中歐拉函數 Φ(n),指的是小於n且與n互素地正整數的個數。
考慮歐拉定理更一般的形式:a m ≡ 1 mod n,若a與n互素,則至少有一個整數m滿足M=Φ(n),我們稱最小正冪m為下列之一:
- a 模 n 的階
- a 所屬的模 n 的指數
- a 所產生的周期長
如表所示給出了所有小於19的正整數a模19的冪,可以發現所有序列均以1結束;每個序列的周期長都可以整數Φ(19)=18,即每一行都有整數個子序列;有一些序列長度為18,這時我們說底a生成模19的非零整數集,並稱這樣的整數為模數19的本原根。
更一般來說,我們說Φ(n)是一個數所屬的模n的可能的最高指數。如果一個數的階為Φ(n),則稱之為n的本原跟。本原跟的奇特之處在於若a是n的本原跟,則a1,a2,……,aΦ(n) 模n是各不相同的,且均與n互素。素數19的本原跟為2,3,10,13,14,15。
並不是所有整數都有本原跟,事實上,只有形如2,4,pα,2pα的整數才有本原跟,p是任何素數,α是正整數。
1.5.2 模算術對數
對於底數x和數y,y=x logx(y)
對數有以下性質:
- logx(1) = 0
- logx(x) = 1
- logx(yz) = logx(y) + logx(z)
- logx(yr) = r * logx(y)
對素數p的本原跟a,a的1到p-1次方冪可產生[1,p-1]的每一個整數一次。而對任何整數b,根據模算術定義,b ≡ r mod p,一定有唯一的冪i使得 b ≡ ai mod p,0 ≤ i ≤ p - 1,這里的i稱為以a為底(模p)b的離散對數,記為dloga,p(b)。而dloga,p(1) = 0,dloga,p(a) = 1。
由於 x = a dloga,p(x) mod p,y = a dloga,p(y) mod p,xy = a dloga,p(xy) mod p,由模乘的性質 xy mod p = (x mod p)(y mod p)mod p,a dloga,p(xy) mod p = (a dloga,p(x) mod p) * ( a dloga,p(y) mod p) = a dloga,p(x) + dloga,p(y) mod p
根據歐拉定理,對任何互素的a和n,有a Φ(n) ≡ 1 mod n,任何正整數z可以表示為z = q + kΦ(n),所以若 z ≡ q mod Φ(n),則a z ≡ a q mod n
代入前式有 dloga,p(xy) ≡ dloga,p(x) + dloga,p(y) mod Φ(p),則 dloga,p(yr) ≡ r * dloga,p(y) mod Φ(p)