這是一種對於一個數論函式 \(f(n)\),計算 \(S(n)=\sum_{i=1}^n f(i)\) 的快速方法。
構造兩個積性函式 \(h,g\) 滿足 \(h=g*f\),根據卷積的定義,有 \(h(i)=\sum_{d|i}g(d)f(\frac{i}{d})\),對 \(h\) 求和,有:
\[\sum_{i=1}^n h(i)=\sum_{i=1}^n\sum_{d|i}g(d)f(\frac{i}{d})
\]
\[=\sum_{d=1}^n g(d)\sum_{d|i}^n f(\frac{i}{d})=\sum_{d=1}^ng(d)\sum_{i=1}^{n/d}f(i)=\sum_{d=1}^n g(d)S(⌊\frac{n}{d}⌋)
\]
然後我們得到
\[\sum_{i=1}^nh(i)=g(1)S(n)+\sum_{d=2}^n g(d)S(⌊\frac{n}{d}⌋)
\]
\[g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{d=2}^n g(d)S(⌊\frac{n}{d}⌋)
\]
\[g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^n g(i)S(⌊\frac{n}{i}⌋)
\]
記憶化之後複雜度是 \(O(n^{\frac{3}{4}})\) 的捏。
如果預處理 \(S(1,...,k)\),那麼複雜度 \(O(k)+O(\frac{n}{\sqrt k})\) 的捏。
當 \(k=n^{\frac{2}{3}}\) 時候有最小值 \(O(n^{\frac{2}{3}})\) 的捏。
尤拉函式怎麼獨角骰?尤拉函式怎麼獨角骰?尤拉函式怎麼獨角骰?
首先有一個 \(n=\sum_{d|n}\phi(d)\),然後套用上面的柿子 \(g(1)S(n)=\sum_{i=1}^nh(i)-\sum_{i=2}^n g(i)S(⌊\frac{n}{i}⌋)\) 可得:
\[S(n)=\frac{n(n+1)}{2}-\sum_{i=2}^n S(⌊\frac{n}{i}⌋)
\]
梅比烏斯怎麼獨角曬?梅比烏斯怎麼獨角曬?梅比烏斯怎麼獨角曬?
首先有一個 \([n=1]=\sum_{d|n}\mu(d)\),還是套用上面的柿子可得:
\[S(n)=1-\sum_{i=2}^nS(⌊\frac{n}{i}⌋)
\]