1. 程式人生 > 其它 >尤拉反演學習筆記

尤拉反演學習筆記

簡介

尤拉反演是一種簡便計算式子的方法,一般用於 \(\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\)

的下限變形,得:

\[\sum_{i=1}^{n}{\sum_{d\mid i,d\mid n}{\varphi(d)}}\pmod{p} \]

改為先列舉 \(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})\),可以通過本題。

例題 2

SPOJ GCDMAT - GCD OF MATRIX

題解