一类积性函数的求和方法

主体内容分成三块

  • 杜教筛(复习)
  • 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)$时间复杂度内解决这类问题

posted @ 2021-02-27 22:00  y_dove  阅读(148)  评论(0编辑  收藏  举报