(0.杜教筛)
(杜教筛能解决积性函数前缀和 并且能做到线性以下)
(1.狄利克雷卷积)
(杜教筛通过狄利克雷卷积降低复杂度)
(狄利克雷卷积)
((f*g) =sum_{d}{f(d)g(frac{n}{d})})
(假设我们要求前缀和的函数是f(x))
(那么设)
(S(n)=sum_{i=1}^{n}{f(i)})
(考虑(f*g)的前缀和)
(sum_{i=1}^{n}sum_{j|i}{f(i)g(frac{i}{j})}=sum_{ijleq{n}}{f(i)g(j)}=sum_{i=1}^{n}{g(i)*S([frac{n}{i}])})
(那么我们要求的总和就是)
(g(1)S(n)=sum_{i=1}^{n}{(f*g)}-sum_{i=2}^{n}{g(i)*S([frac{n}{i}])})
(后面那个东西可以用分块和记忆化搜索优化)
(就和平常莫比乌斯反演的优化一样)
(狄利克雷卷积可以利用分块优化)
$所以重点在于(fg)的前缀和 (
)所以我们只要构造一个g(x)使(fg)的前缀和能够快速求出来就好了(
)例如欧拉函数phi{(x)} 我们知道phiI=id(
)那么带入上面的式子就可以得出(
)S(n)=frac{n(n+1)}{2}-sum_{i=2}^{n}{S([frac{n}{i}])}(
)每次把S(n)的结果记忆化一下(
)预处理出n{frac{2}{3}}的phi(n)的前缀和复杂度就能做到O(n{frac{2}{3}})了$