數論基礎篇
數論
一、整除
\(b=k\times a(k\in \mathbb Z)\Leftrightarrow a|b\Leftrightarrow\) \(\color{red} a 是 b 的因子\)。
-
性質: \(a|b\) 且 $a|c\Leftrightarrow $ \(a|(ma+nb),m,n\in \mathbb Z\)
-
猜結論,從 “因子” 的角度證明。
二、同餘
\(a\equiv b\mod m\Leftrightarrow \color{red} m|(a-b)\)
-
性質
(1) 加減: \(a\equiv x,b\equiv y\Rightarrow a\pm b\equiv x\pm y\)
(2) 乘:
\[\qquad\begin{cases}a\equiv x,b\equiv y\Rightarrow ab\equiv xy\\a\equiv b \Rightarrow a^k\equiv b^k\end{cases} \](3) 除:
\[\qquad\begin{cases}ac\equiv bc \mod m~且~m\perp c\Rightarrow a\equiv b \mod \\a\equiv b \mod m~且~d~|~a,b,m \Rightarrow \frac{a}{d}\equiv \frac{b}{d} \mod \frac{m}{d} \end{cases} \](4) 因數: \(a\equiv b\mod m\Rightarrow a\equiv b \mod n,n|m\)
(5) 倍數: \(a\equiv b \mod m,n\Rightarrow a\equiv b\mod [m,n]\)
(6) 結合律:
\(\color{red}(a\pm b)\% m = (a\%m\pm b\%m) \%m\)
$\color{red}(a\times b)\%m = (a\% m\times b\%m)\%m$
(7) \(\color{red}\large乘法逆元\) :
當 \(\color{red}a\perp m\) 時,記模 \(m\)
求法:
<1>蒙哥馬利:當 \(m\) 為質數時, \(inv_x=x^{m-2}\) 。
證明:由費馬大定理, \(m\) 為質數時 \(x^{m-1}\equiv 1\) ,則 \(x^{m-2}\equiv x^{-1}\) 。
<2>歐幾里得求法
設 \(x=inv_a\) ,那麼要解 \(ax\equiv 1\mod m\) ,等效於解 \(ax+bm=1\) 。最後調整 \(x\) 到 \([1,m-1]\) 。
<3>線性推逆元
設 \(\rm s=P/x,t=P%x\) ,則 \(\rm P=sx+t\equiv 0 \mod P\) ,移項得 \(\frac{1}{x}\equiv \frac{-s}{t}\)
<4>線性推階乘逆元
由於 \(i!~inv_{i!}\equiv 1\equiv (i+1)!~inv_{(i+1)!}\) ,則 \(inv_{i!}=(i+1)\times inv_{(i+1)!}\)
由 整除 推性質。
-
*一些定義
(1) 同餘類:模 \(m\) 意義下 \(x\) 的同餘類定義為:由所有在模 \(m\) 意義下等於 \(x\) 的陣列成的集合。這樣的集合共 \(m\) 個。
(2) 完全剩餘系:由模 \(m\) 的的 \(m\) 個同餘類中分別取出一個數組成模 \(m\) 的一個完系。
在完系中,任意兩個數模 \(m\) 互不同餘。
(3) 縮剩餘系:在完系中保留所有與 \(m\) 互質的數。
縮系大小為 \(\phi(m)\) ,且縮系中任意兩個元素 \(\times 或/\) 的結果仍然是某個縮系元素的同餘類。
性質:
(1) 若 \(a_{1,2...m}\) 是模 \(m\) 下的一個完系,且 \(x\perp m\) ,那麼 \(xa_i+b\) 也是完系。
若 \(a_i\) 為一個縮系且 \(x\perp m\) ,那麼 \(xa_i+b\) 也是縮系。
(2) 若 \(a_i\) 為一個完系,則 $$\sum a_i\equiv \frac{m(m+1)}{2}\mod m$$
(3) 若 \(a_i,b_i\) 均為縮系,則 $$\prod a_i\equiv \prod b_i \mod m$$
這些東西和一些東西的證明有關,比如:尤拉定理、原根等等。不要求完全掌握。
三、素數
-
算術基本定理:
任意數可唯一拆解為 \(x=\prod p_i^{\alpha_i}\) ,其中 \(p_i\) 為質數, \(\alpha_i\in \mathbb N\) 。
拓:
(1) 約數個數:\(\prod(a_i+1)\)
(2) 約數和: \(\prod (1+p_i^1+p_i^2+...p_i^{\alpha_i})=\prod \frac{p_i^{\alpha_i+1}-1}{p_i-1}\)
(3) \((a,b)=\prod p_i^{\min(\alpha_i,\beta_i)},[a,b]=\prod p_i^{\max(\alpha_i,\beta_i)}\)
\((a,b)\times [a,b]=ab\)
-
質數的判定
定理:\(n\) 以內素數個數隨 \(n\) 的增大逐漸逼近 \(\frac{n}{ln~n}\) 。
(1) 樸素判定
定理:如果 \(n\) 是合數,那麼一定存在一個 \(\le \sqrt{n}\) 的質數是它的因子。
列舉所有 \(\le \sqrt n\) 的數,判斷其是不是 \(n\) 的因子即可。 \(\mathcal O(\sqrt n)\)
(2) 埃氏篩
對於每個素數,把它的所有倍數篩去。
rep(i,1,n)if(!p[i]) for(int j=p[i]+p[i];j<=n;j+=p[i]) p[j]=1;
定理: \(\sum_{p\le n}\frac{1}{p}=\log \log n\)
所以埃氏篩複雜度為 \(\mathcal O(n\log \log n)\) 。 埃氏篩的優勢:能夠比較準確地 運用某些數 來篩去 某個範圍內的值 。
經典例題:給定常數 \(K\) ,定義一個滿足 \(x>1\) 且 \(\forall i \in [2,min(K,x-1),i\nmid x\) 的數 \(x\) 為類質數,求 \([L,R]\) 所有類質數的和。 \(\rm L,R\le 10^9,R-L\le 10^7\) 。於是我們先求出所有 \(\le K\) 的質數,再用這些數去篩掉 \([L,R]\) 中的數。
(3) 尤拉篩
注意到埃氏篩中很多數被多個素數篩掉,我們改進一下使得每個數只被其最小的質因子篩掉。這就是尤拉篩。
```
rep(i,1,n){
if(!p[i])pr[++cnt]=i;
rep(j,1,cnt){
if(i*pr[j]>n)break;
p[i*pr[j]]=1;
if(i%pr[j]==0)break;
}
}
```
複雜度 \(\mathcal O(n)\)
(4) \(\rm Miller-Rabin\) 素數判定
<1> 前置:
費馬小定理: \(p\) 為質數時, \(\forall a,a^{p-1}\equiv 1\mod p\) 。
費馬素數檢測: \(a^{p-1}\equiv 1\mod p\) 是 \(p\) 為素數的充分不必要條件。
二次探測定理:當 \(p\) 為素數時, \(x^2\equiv 1\mod p\) 當且僅當 \(x=1或p-1\) 。那麼我們可以記錄 \(y=x^2\) ,如果 \(y=1\) 但是 \(x\ne1或p-1\) ,那麼 \(p\) 就不是素數。
<2> 實現:
i. 直接判斷 0,1,2 和偶數。
ii. 將 \(p-1\) 拆分成 \(2^k\times t\) 的形式,方便二次探測。
iii. 隨機一個 \(\le p-1\) 的 \(a\) ,初始 \(x=a^t\%p\) ,不斷二次探測,共進行 \(k\) 次。
iiii. 最後 \(x=a^{p-1}\) ,檢測 \(x\) 是否與 \(1\) 同餘。
iiiii. 返回 iii ,進行 \(10\) ~ \(20\) 次。
bool pd(int p){
if(p<=1)return false;
if(p==2)return true;
if(!(p&1))return false;
int k=0,t=p-1;
while(!(t&1))t>>=1,++k;
rep(i,1,10){
int a=random(p-1);
int x=kpow(a,t,p);
rep(j,1,k){
int y=x*x%p;
if(y==1&&x!=1&&x!=p-1)return false;
x=y;
}
if(x!=1)return false;
}return true;
}
雖然是個隨機化演算法,但是檢測很多次後基本上能保證正確性。複雜度 \(\mathcal O(n^{\frac{1}{4}})\) 。
四、重要數論定理及演算法
-
歐幾里得演算法與擴充套件歐幾里得演算法
(1) 歐幾里得演算法求 \(gcd\) :
若 \(d~|~a,d~|~b\) ,則 \(d~|~(ax+by)\) ,那麼一定滿足 \(d~|~(a-\lfloor\frac{a}{b}\rfloor\times b)\) ,那麼 \(d~|~gcd(a,b)\) 。所以 \(gcd(a,b)=gcd(b,a\%b)\) 。
\(a\to a\%b\) ,首先 \(a\ge b\) ,在值域上每 \(b\) 分段,那麼無論 \(a\) 在哪一段,都滿足 \(a\%b\le \frac{a}{2}\) 。所以每次遞迴中,大的那個數至少減半,複雜度 \(\mathcal O(\log(a+b))\) 。
(2) 擴充套件歐幾里得演算法解丟番圖方程:
<1> 丟番圖方程:形如 \(a_1x_1+a_2x_2+...a_nx_n=c\) 的不定方程。這裡只考慮 \(ax+by=c\) 。
<2> 裴蜀定理:丟番圖方程有解的充要條件為 \(gcd(a_1,x_2...a_n)|c\) 。
<3> 擴充套件歐幾里得演算法:解 \(ax+by=(a,b)\) 得出一組整數解。
由於 \(ax_1+by_1=(a,b)\) 且 \((a,b)=(b,a\%b)\) ,那麼 \(ax_1+by_1=bx_2+a\%by_2\) 。
又因為 \(bx_2+a\%by_2=bx_2+ay_2-\lfloor\frac{a}{b}\rfloor\times by_2=y_2a+(x_2-\lfloor\frac{a}{b}\rfloor y_2)b\) 。
換主元,係數相同一定是一組解,那麼 \(\begin{cases}x_1=y_2\\y_1=x_2-\lfloor\frac{a}{b}\rfloor y_2\end{cases}\) ,遞迴處理即可。
邊界為 \(b=0\) 時, \(x=1,y=0\) 。
通解:\(\begin{cases}x=x_0+t\times \frac{b}{(a,b)}\\y=y_0-t\times \frac{a}{(a,b)}\end{cases},t\in \mathbb Z\) 。
\(ax+by=c\) 若 \(c\ne (a,b)\) ,相當於解 \(ax+by=k\times (a,b)\) 即 \(ax'+by'=(a,b),x=kx',y=ky'\) 。
-
尤拉定理與費馬小定理
(1) 尤拉函式 \(\varphi(n)\) :\(\sum_{i=1}^{n-1}[gcd(i,n)==1]\) (小於 \(n\) 的數中與 \(n\) 互質的正整數的個數)
<1> 性質
i. 積性函式:若 \(a\perp b\) ,則 \(\phi(ab)=\phi(a)\times \phi(b)\) 。
ii. \(\sum_{d|n} \varphi(d)=n\)
iii. \(\varphi\times I=id\) (反演中用到)
<2> 求法
i. 通式法: \(\varphi(n)=n\prod_{p_i|n} (1-\frac{1}{p_i})\)
證明:
當 \(n\) 為質數時: \(\varphi(n)=n-1\) 。小於 \(n\) 的所有數都與 \(n\) 互質。
當 \(n=p^k\) 時: \(\varphi(p^k)=p^k-p^{k-1}=p^k\times (1-\frac{1}{p})\) 。 \(n\) 以內只有 \(p\) 的倍數與 \(n\) 不互質,而 \(p\) 的倍數有 \(p,2p,3p...p^{k-1}\cdot p\) 共 \(p^{k-1}\) 個。
當 \(n\) 一般時,將 \(n\) 唯一分解為 \(\prod_{p_i|n} p_i^{\alpha_i}\) 。由於 \(\varphi\) 為積性函式,則
$$\varphi(n)=\prod_{p_i|n} \varphi(p_i^{\alpha_i})=\prod_{p_i|n} p_i^{\alpha_i}\times (1-\frac{1}{p_i})=n\times \prod_{p_i|n} (1-\frac{1}{p_i})$$
證畢。
ii. 尤拉篩
當 \(x\) 為質數時, \(\varphi(x)=x-1\)
當 \(x=i\times p_j\) 且 \(i\perp p_j\) 時,由積性函式, \(\varphi(x)=\varphi(i)\times \varphi(p_j)\) 。
當 \(x=i\times p_j\) 且 \(i\%p_j\ne0\) 時, \(\varphi(x)=p_j\times \varphi(i)\) 。
理解:由通式,在 \(i\) 基礎上多乘一個 \(p_j\) 並不改變 \(\prod_{p_i|n}(1-\frac{1}{p_i})\) ,只是使 \(n=i\to i\times p_j\) 。
(2) 尤拉定理: \(\color{red}a\perp m\) 時, \(a^{\varphi(m)}\equiv 1\mod m\)
證明:設 \(x_i,i\in[1,\varphi(m)]\) 是模 \(m\) 意義下的一個縮系,若 \(a\perp m\) ,那麼 \(ax_i\) 也是一個縮系。(性質 (1) )
根據縮系的性質 (3) , \(\prod x_i\equiv\prod ax_i \mod m\)
又因為 \(\prod ax_i=a^{\varphi(m)}\prod x_i\) ,所以 \(a^{\varphi(m)}\equiv 1 \mod m\) 。
(3) 費馬小定理:當 \(m\) 為質數時, \(a^{m-1} \equiv 1 \mod m\) 。尤拉定理是對其的一般化。
(4) *擴充套件尤拉定理:
$$a^b\equiv\begin{cases}a^{b%\varphi(m)},(a,m)=1\ a^b,(a,m)\ne 1,b<\varphi(m)\ a^{b%\varphi(m)+\varphi(m)},(a,m)\ne 1,b\ge\varphi(m) \end{cases} \equiv a^{min(b,b%\varphi(m)+\varphi(m))}$$
-
*威爾遜定理: \((p-1)!\equiv -1\mod p\Leftrightarrow p\) 為質數。
-
中國剩餘定理 \(\rm (CRT)\)
求一個 \(x\) 滿足 \(\begin{cases}x\equiv a_1\mod m_1\\x\equiv a_2\mod m_2\\\vdots \qquad\vdots\qquad\qquad\vdots\end{cases}\) 。其中 \(\color{red}m_i 互質\)。
解:設 \(S=\prod m_i\) , \(M_i=\frac{S}{m_i}\) ,\(y_i\) 為模 \(m\) 意義下 \(M_i\) 的逆元。
那麼 \(a_iM_iy_i\equiv \begin{cases}a_i\mod m_i(y_i為逆元)\\ 0\mod m_j,j\ne i(M_i含有m_i的因子)\end{cases}\)
所以 \(x=\sum a_iM_iy_i\) 一定是一個解。通解為 \((\sum a_iM_iy_i)+kS\) 。
*擴充套件中國剩餘定理
-
\(\rm Lucas\) 定理
\[\tbinom{n}{m}\%p=\tbinom{n/p}{m/p}\times \tbinom{n\%p}{m\%p}\%p \]