尤拉反演學習筆記
簡介
尤拉反演是一種簡便計算式子的方法,一般用於 \(\gcd\) 求和中。適用範圍比較窄,但是相比於莫比烏斯反演,尤拉反演更加容易。
前置知識:
- 數論分塊
- 尤拉函式
尤拉函式簡介
這一部分可能與尤拉反演關係不大,大家瞭解即可。
定義 1:尤拉函式 \(\varphi(x)\) 為數論函式,表示小於等於 \(x\) 的正整數中與 \(x\) 互質的數的個數。
我們可以將 \(\varphi(x)\) 簡單地表示如下:
\[\varphi(x)=\sum_{i=1}^{x}[\gcd(i,x)=1] \]定理 2(尤拉定理):若兩正整數 \(a,p\) 互質,則 \(a^{\varphi(p)}\equiv1\pmod{p}\)
定理 3(擴充套件尤拉定理):對於任意的三正整數 \(a,b,p\),若 \(b\geq\varphi(p)\),則:\(a^b\equiv a^{b\bmod \varphi(p)+\varphi(p)}\pmod{p}\)。
尤拉反演公式
推論 4(尤拉反演公式):對於任意的一個正整數 \(i\),滿足:
\[i=\sum_{d\mid i}\varphi(d) \]證明:\(i=\sum_{d\mid i}\sum_{j=1}^{i}{[\gcd(i,j)=d]}=\sum_{d\mid i}\sum_{j=1}^{\lfloor\frac{i}{d}\rfloor}{[\gcd(i,j)=1]}=\sum_{d\mid i}\varphi(\frac{i}{d})=\sum_{d\mid i}{\varphi(d)}\)
例題
例題 1
\(T\) 組資料,每一組資料給出一個正整數 \(n\) 和一個質數 \(p\),計算:
\[\sum_{i=1}^{n}{\gcd(i,n)}\pmod{p} \]\(1 \leq n \leq 10^7,1 \leq T \leq 2 \times 10^3,1 \leq p \leq 10^{18}\)
時間限制 \(2.00\operatorname{s}\),記憶體限制 \(128\operatorname{MB}\)
將式子中的 \(\gcd\) 改為尤拉反演形式:
\[\sum_{i=1}^{n}{\sum_{d\mid \gcd(i,n)}{\varphi(d)}}\pmod{p} \]將第二個 \(\sum\)
改為先列舉 \(d\),得:
\[\sum_{d\mid n}\varphi(d)\sum_{i=1}^{n}[d\mid i]\pmod{p} \]將後半邊得 \(\sum\) 消去,得:
\[\sum_{d\mid n}\varphi(d)\frac{n}{d}\pmod{p} \]然後用線性篩求出 \(\varphi\) 函式,然後列舉因數回答詢問即可。
時間複雜度 \(O(n+T\sqrt{n})\),可以通過本題。