一类积性函数的求和方法
主体内容分成三块
- 杜教筛(复习)
- min_25筛(重点)
- powerful number(重点)
- 不排除咕咕咕的可能
就不按顺序来了吧
powerful number理论
考虑我们要求$\Sigma_{i = 1}^n f_i$,$n \leq 1e13$.
其中f为积性函数
我们考虑找一个函数g(容易求出前缀和),满足g(p) == f(p),$p \in Prime$.
然后我们考虑再求出一个函数h,满足h * g = f,此处乘法定义为迪利克雷卷积.
然后我们对于任意质数p,h(p)*g(1) + h(1)*g(p) = f(p),f(p) = g(p),联立得h(p) = 0
又因为h为积性函数,可以发现若h存在某个质因子p,满足其次数$\leq$ 1,即有h(p) = 0
对于x,若其质因数分解后任意一个质因子的次数都$\geq$2,则称x是powerful number,可以发现h函数仅在powerful number处有值
交换求和顺序可以发现 $\Sigma f_i$ = $\Sigma_{d = 1}^{n}$ $h_d$ * $S_{\frac{n}{d}}$,可以发现powerful number的个数是$O(\sqrt n)$的,所以只要暴力dfs出powerful number,如果能快速算出g的前缀和S,那么
就可以在$O(\sqrt n)$时间复杂度内解决这类问题