具体可以参考这个博客:https://blog.csdn.net/skywalkert/article/details/50500009
主要就是运用 Dircichlet 卷积降低求积性函数前缀和的复杂度。
如果 Dircichlet 卷积的左边其中一个函数是待求前缀和的,而且卷积的另外两个函数比较好计算前缀和,那么就可以简化计算的过程。
以求 \(\mu\) 函数的前缀和为例,我们知道
\[\mu * I = e
\]
那么
\[1=\sum_{i=1}^{n} [i=1] = \sum_{i=1}^{n} \sum_{d|i} \mu(d) = \sum_{i=1}^{n} S(\lfloor{\frac{n}{i}}\rfloor) \\
S(n) = 1 - \sum_{i=2}^{n} S(\lfloor{\frac{n}{i}}\rfloor)
\]
记忆化时,有两种方法:
- map,直观
- 开 \(O(\sqrt{N})\) 大小的两个数组