尤拉反演
引入
你遇到了一道數論題:
求 \(S=\sum\limits_{i=1}^n\sum\limits_{j=1}^m\gcd(i,j)\) 的值,對 \(19260817\) 取模,\(1\le n\le m\le 10^5\)
“這不是莫比烏斯反演裸題嗎?”
\(\begin{aligned} S&=\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)\\ &=\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^m[\gcd(i,j)=d]\\ &=\sum_{d=1}^nd\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[\gcd(i,j)=1]\\ &=\sum_{d=1}^nd\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{t|\gcd(i,j)}\mu(t)\\ &=\sum_{d=1}^nd\sum_{t=1}^{n/d}\mu(t)\sum_{i=1}^{n/d}[t|i]\sum_{j=1}^{m/d}[t|j]\\ &=\sum_{d=1}^nd\sum_{t=1}^{n/d}\mu(t)\left\lfloor\dfrac{n}{dt}\right\rfloor\left\lfloor\dfrac{m}{dt}\right\rfloor \end{aligned}\)
令 \(T=dt\)
\(\begin{aligned} S&=\sum_{d=1}^nd\sum_{t=1}^{n/d}\mu(t)\left\lfloor\dfrac{n}{dt}\right\rfloor\left\lfloor\dfrac{m}{dt}\right\rfloor\\ &=\sum_{T=1}^n\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\sum_{t\mid T}\mu(t)(T/t)\\ &=\sum_{T=1}^n\left\lfloor\dfrac{n}{T}\right\rfloor\left\lfloor\dfrac{m}{T}\right\rfloor\varphi(T) \end{aligned}\)
至此可以 \(O(n)\) 計算
你有一個朋友,然後你看到了他的做法:
\(\begin{aligned} S&=\sum_{i=1}^n\sum_{j=1}^m\gcd(i,j)\\ &=\sum_{i=1}^n\sum_{j=1}^m\sum_{d|\gcd(i,j)}\varphi(d)\\ &=\sum_{d=1}^{n}\varphi(d)\sum_{i=1}^n[d|i]\sum_{j=1}^m[d|j]\\ &=\sum_{d=1}^{n}\varphi(d)\left\lfloor\dfrac{n}{d}\right\rfloor\left\lfloor\dfrac{m}{d}\right\rfloor \end{aligned}\)
其中用到了尤拉函式的一條性質:\(\sum\limits_{d\mid n}\varphi(d)=n\)
你看不懂,但大受震撼
朋友告訴你,運用這條性質推式子的過程被稱為尤拉反演
尤拉反演
這東西的核心只有上面那一條性質,適用範圍也比較小(感覺都不應該稱為反演,,實在沒啥應用)
但在某些情況下,用尤拉反演推式子確實會簡單很多
首先給出 \(\sum\limits_{d\mid n}\varphi(d)=n\) 的證明:
首先有 \(\sum\limits_{d\mid n}\sum\limits_{i=1}^n[\gcd(i,n)=d]=n\)
其中的方括號是艾佛森括號
這個式子其實是將 \(1\sim n\) 的所有整數 \(i\) 按 \(\gcd(i,n)\) 的值分類
每個 \(i\) 都只會在 \(d=\gcd(i,n)\) 處產生恰好一次貢獻,故左式的值為 \(n\)
簡單地推一推式子:
\(\begin{aligned}
\sum_{d\mid n}\sum_{i=1}^n[\gcd(i,n)=d]=n &\Rightarrow\\
\sum_{d\mid n}\sum_{i=1}^{n/d}[\gcd(i,n/d)=1]=n &\Rightarrow\\
\sum_{d\mid n}\varphi(n/d)=n&\Rightarrow\\
\sum_{d\mid n}\varphi(d)=n&
\end{aligned}\)
結論得證
然後你只要會用這個結論就行了
習題
主要是應用於 \(\gcd\) 求和形式的式子,直接把 \(\gcd\) 換成 \(\sum\limits_{d\mid \gcd}\varphi(d)\) ,然後大力推一波即可