Powerful Number 筛法
我也不想学筛法了,可你考试时候出一个新筛法就不厚道了吧,我还开始以为这是杜教筛。。。
$tips:$学完杜教筛立马学$Powerful \ Number$筛法,此筛法强悍如斯
$Powerful \ Number$筛法
算是杜教筛的究极版$?$
考虑筛积性函数$f$前缀和
求函数$F(n)$
$F(n)=\sum_{i=1}^{n}f(i)$
时间复杂度$O(\sqrt{n})$
主要是基于$PN$的筛法
定义$:$
$PN:n$质因数分解,$n=\prod_{i=1}^{m}p_i^{e_i}$
当满足前$m$个质数都在$n$里面出现多于一次
性质$1:$
所有的$PN$都能表示为$a^2\times b^3$
显然任意一个大于$2$的数字可以被分成$2\times k_1+3\times k_2$
性质$2:$
有关时间复杂度为$O(\sqrt{n})$的性质
$n$以内的$PN$至多有$\sqrt{n}$个
对于函数$\sqrt{n/x^2}^3$在$[1,\sqrt{n}]$积分
$ \displaystyle\int _{1}^{\sqrt{n}} \sqrt{n/x^2}^3=\sqrt{n}$
然后得证
筛法$:$
首先需要构造一个函数$g$
满足在数字为质数时$g(p)=f(p)$
并且$G(n)=\sum_{i=1}^{n}g(i)$易得
构造函数$h=f/g,$这里$/$表示狄利克雷卷积除法
$h(1)=1$
对于素数$p$
$f(p)=g(1)h(p)+g(p)h(1)$
$f(p)=h(p)+g(p)$
$g(p)=f(p)$
$h(p)=0$
由于$h$是积性函数,且所有素数位置的$h$等于$0$,那么除了$PN$的位置,其余的位置都是$0$
还记得杜教筛是$h=f*g$
$f=g*h$
$F(n)=\sum_{i=1}^{n} f(i)$
$F(n)=\sum_{i=1}^{n}(g*h)(i)$
$F(n)=\sum_{i=1}^{n}\sum_{d|i}h(d)g(i/d)$
$F(n)=\sum_{d=1}^{n}h(d)\sum_{i=1}^{n/d}g(i)$
$F(n)=\sum_{d=1}^{n}h(d)G(n/d)$
由于除了$PN$的其他所有位置全部为$0$
那么$:$
$F(n)=\sum_{d=1,d\ is \ PN}^{n}h(d)G(n/d)$
显然的那么,可以在$O(\sqrt{n})$的时间内得到$F(n)$
只需要得到需要的$h(d)\times G(n/d)$
考虑$h$是积性函数,那么我们又知道$h(p)=0$
$h=f/g$
今天考试这个题$h$可以打表发现$x>2,h(x)$不变
还有一般方法
$f=g * h$
$f(p^c)=\sum_{i=0}^{c}g(p^i)h(p^{c-i})$
枚举$p$和指数$c$然后计算
一般过程$:$
$1.$构造$g$
$2.$构造快速求$G$的方法
$3.$计算$h(p^c)$
$4.$搜索$PN$,过程中累加答案
$5.$得到结果