杜教筛:在 $O(n^{2/3})$ 的时间内求出积性函数 $f(x)$ 的前缀和。
注意事项:
1. 线性预处理 $n^{2/3}$ 内的所有 $f$ 的值再开始筛。
2. 一定要用一个数组(而不是 map)来记忆化,对于所有 $d$ 记忆 $n/d$ 处的 $f$ 前缀和。
3. 如果有多次询问,用一个 unordered_map 记忆所有 $f$ 的前缀 $n$ 的值(注意不是 $d$),可以避免对于一个固定的 $n$ 多次去筛所有 $n/d$ 处的前缀和。
4. 这种题一般 $n \leq 10^{10}$,一定要注意取模时不要溢出。。。
5. 非常卡常(