杜教筛小记

杜教筛小记

对于一个积性函数\(F(n)\),要在较低时间内求前缀和\(S_F(n)=\sum_{i=1}^nF(i)\)

假设我们能找到一个函数\(G(n)\)使得\(G(n),S_{F \oplus G}(n)\)能在较短时间内算出

其中\((F\oplus G)(n)=\sum_{d|n}F(d)G(\frac{n}{d})\)

那么就有

\(S_{F\oplus G}(n)=\sum_1^n G(i)F(\lfloor\frac{n}{i}\rfloor)\)

\(G(1)F(n)=S_{F\oplus G}(n)-\sum_2^nG(i)F(\lfloor\frac{n}{i}\rfloor)\)

这个\(\lfloor\frac{n}{i}\rfloor\)的个数是\(O(\sqrt n)\)的

当\(n\)较小时可以直接预处理出来前\(m\)个

不要存状态\(\text{dp}\),直接递归求解用\(\text{map}\)维护记录即可

当\(m=n^{\frac{2}{3}}\)时,复杂度最优为\(O(n^{\frac{2}{3}})\)


求\(S_\mu(n)\)

由于\(\sum_{d|n}\mu(d)=[n=1]\)

那么就知道可以构造\(G(n)=1\)

则\((F\oplus G)(n)=[n=1]\)

\(S_{F\oplus G}(n)=1\)

\(F(n)=S_{F\oplus G}(n)-\sum_2^nF(\lfloor\frac{n}{i}\rfloor)\)

上一篇:数论进阶 


下一篇:莫比乌斯反演