$\quad $ 《一種可以在低於線性時間內計算出積性函式字首和的篩法》
$\quad $ 其實說是篩法,倒不如說是技巧。先說一下大致過程吧。
$\quad $ 假設你要求 \(\sum _{i=1}^{n}f(i)\) ,\(f(x)\) 是一個積性函式,記 \(s(n)=\sum _{i=1}^{n}f(i)\) 。
$\quad $ 那麼你要找出一個積性函式 \(g\) ,使得 \(g\) 與 \(f\) 的狄利克雷卷積(記為 \(h\) )的字首和方便計算。
主要過程如下:
\[\sum _{i=1}^{n}h(i)=\sum _{i=1}^{n}\sum _{d|i}g(d)f(\frac{i}{d})
\]
\[\sum _{i=1}^{n}h(i)=\sum _{d=1}^{n}g(d)\sum _{i=1}^{\lfloor \frac{n}{d}\rfloor}f(i)
\]
\[\sum _{i=1}^{n}h(i)=\sum _{d=1}^{n}g(d)s(\lfloor\frac{n}{d}\rfloor)
\]
然後提出含 \(s(n)\) 的項。
\[g(1)s(n)=\sum _{i=1}^{n}h(i)-\sum _{d=2}^{n}g(d)s(\lfloor\frac{n}{d}\rfloor)
\]
然後遞迴求解+記憶化即可。
$\quad $ 寫兩個常用東西:
\(\varphi * I=id\)
\(I*\mu=\epsilon\)
$\quad $ 上面的乘號代表卷積運算,這兩個東西其實就是我在莫反做題記開頭給到的兩個結論。這兩個東西的應用似乎有人叫做尤拉反演和莫比烏斯反演?不是很清楚。
看看例題吧。
杜教篩模板
$\quad $ 即:
\[ans1=\sum _{i=1}^{n}\varphi(i)
\]
\[ans2=\sum _{i=1}^{n}\mu(i)
\]
$\quad $ 先去處理 \(ans1\) ,按照上面的方法,我們令 \(g\) 函式為 \(I\) ,則:
\[h(n)=\sum _{d|n}\varphi(d)=n
\]
於是有:
\[s(n)=\sum _{i=1}^{n}i - \sum _{i=2}^{n}s(\lfloor\frac{n}{d}\rfloor)=\frac{n\times(n+1)}{2}-\sum _{d=2}^{n}s(\lfloor\frac{n}{d}\rfloor)
\]
$\quad $ 然後處理 \(ans2\) ,我們仍令 \(g=I\) ,則:
\[h(n)=\mu*I=\epsilon
\]
$\quad $ 這個的字首和顯然就是 \(1\) 了。於是我們得到:
\[s(n)=1-\sum _{i=2}^{n}s(\lfloor\frac{n}{d}\rfloor)
\]
$\quad $ 然後分別計算 \(ans1\) 和 \(ans2\) 即可。
神犇和蒟蒻
$\quad $ 小清新題,求:
\[ans1=\sum _{i=1}^{n}\mu(i^2)
\]
\[ans2=\sum _{i=1}^{n}\varphi(i^2)
\]
$\quad $ \(ans1\) 一眼就是 \(1\) ,沒什麼好說的,我們來看 \(ans2\) :
\[ans2=\sum _{i=1}^{n}\varphi(i^2)=\sum _{i=1}^{n}i\varphi(i)
\]
$\quad $ 然後令 \(g=id\)
那麼:
\[h(n)=\sum _{d|n}d\varphi(d)\frac{n}{d}=n^2
\]
$\quad $ 然後我們還需要知道:\(\sum _{i=1}^{n}i^2=\frac{n\times(n+1)\times(2n+1)}{6}\)
$\quad $ 然後就可以得出:
\[s(n)=\frac{n\times(n+1)\times(2n+1)}{6}-\sum _{i=2}^{n}is(\lfloor\frac{n}{i}\rfloor)
\]
\[To Be Continued
\]