[模板]Min_25筛

Posted ressed

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[模板]Min_25筛相关的知识,希望对你有一定的参考价值。

用途

快速($O(frac{n^{3/4}}{logn})$)地计算一些函数f的前缀和,以及(作为中间结果的)只计算质数的前缀和

一般要求f(p)是积性函数,$f(p)$是多项式的形式,且$f(p^k)$可以快速计算

做法

首先考虑求出范围内的质数的取值的和

如果有$f(p)=sum{a_ip^i}$

那么我们构造$h_i(x)=x^i$,不难发现$h_i$是完全积性的

就是说,把f在质数的时候的式子拆开,然后让它在不是质数的时候也成立

 

考虑求其中的一个h,接下来设$pri_j$是第j个质数

设$g(n,j)=sumlimits_{i=1}^{n}[i in Prime && min_divisor(i)>pri_j]h(j)$,即n范围内质数或者最小质因数$>pri_j$的h值之和

可以当成是埃氏筛法的过程,已经筛掉了前j个质数

那么$g(n,inf)$就是要求的质数的和,g(n,1)就是所有数的h的和

(关于计算g(n,1),次数要是小的话可以直接带公式,大的话就要斯特林数或者别的什么来求自然数幂和了..不过别忘了减掉1)

考虑转移,有:

$g(n,j)=g(n,j-1) , pri_j*pri_j>n$

$g(n,j)=g(n,j-1)-h(pri_j)(g(lfloorfrac{n}{pri_j} floor,j-1)-sumlimits_{i=1}^{j-1}h(pri_j)) , pri_j*pri_j<=n$

考虑$pri_j*pri_j<=n$的情况,它在从$g(n,j-1)$转移过来的时候,需要减掉那些最小质因子是$pri_j$的,而h又是完全积性的,所以可以直接乘。但这样减会多减掉那些比$pri_j$小的质数乘$pri_j$,需要再加回来

于是我们就求出来质数的h的和啦!然而这有什么卵用呢..

 

以上是关于[模板]Min_25筛的主要内容,如果未能解决你的问题,请参考以下文章

[模板]Min_25筛

[luogu P5325][模板]Min_25筛

P4213 模板杜教筛(Sum) min_25筛

Min_25筛 学习小记

线性筛模板

Min_25筛