min25筛
min25筛
用来求解\(\sum_{i=1}^n f(i)\),其中\(f(i)\)是积性函数,且对于\(i\in Prime\)的\(f(i)\)求解很友好。
思路清奇。不会复杂度证明,一说是\(\mathcal O(\frac{n^\frac34}{\log n})\),还有一说是\(\mathcal O(n^{1-\epsilon})\)。总之据说在通常数据下跑得很快(貌似是\(n\leqslant 10^{10}\sim 1s\))。
min25筛的思路就是先求出来所有质数部分的和\(\sum_{i\in Prime\cup[1,n]}f(i)\),从而进一步求出来最终答案。
对于前者的求解,通过类似“构造+筛”的方法,设函数\(F(i)\)是完全积性函数且对于所有\(i\in Prime\),有\(F(i)=f(i)\)。设\(g_{i,j}=\sum_{k\leqslant i\&\&(k\in Prime\mid\mid minP_k>j)}F(k)\),条件很长,意思是\(k\leqslant i\)并且\(k\)要么是质数,要么\(minP_k\)(这里表示\(k\)的最小质因数)大于\(j\),对所有满足这个条件的\(F(k)\)求和。那么这一步的答案就是\(g_{n,\mid P\mid}\),其中\(\mid P\mid\)表示不大于\(n\)的质数的个数。
下面考虑\(g\)的转移。对于\(g_{n,i}\),由\(g_{n,i-1}\)转移,这样加强了限制,再考虑被筛掉的贡献,不难得出\(g_{n,i}=g_{n,i-1}-K\),发现去掉的贡献\(K\)就是最小质因数为\(P_i\)(表示第\(i\)个质数)的合数的\(F\)带来的贡献,提掉一个质因子\(P_i\),剩下\(g_{\lfloor\frac{n}{P_i}\rfloor,i-1}\),但这之中含有质因子比\(P_i\)小的贡献,这样并不符合最小质因数为\(P_i\),显然只可能是比\(P_i\)小的质数了,所以还要去掉\(g_{P_i-1,i-1}\);由于完全积性,都还会乘上\(F(P_i)\)的贡献,得到\(K=F(P_i)\times(g_{\lfloor\frac{n}{P_i}\rfloor,i-1}-g_{P_i-1,i-1})\)。注意这步转移有条件,即\(P_i^2\leqslant n\),否则不存在这样的合数,无需筛掉,总结一下
注意要单独考虑\(1\)的情况。这样,这步的答案即可得到。
再把剩下的合数的贡献补上来,同样,我们设\(s_{i,j}=\sum_{k\leqslant i\&\&minP_k\geqslant j}f(i)\),跟上面类似,条件由“\(>\)”变成了“\(\geqslant\)”,并且删掉了\(k\in Prime\)的条件。注意这里求的函数\(f\)而不是\(F\)了。同样我们列出来\(s\)的关系式
这里表示的意思是:拆成质数+合数,质数通过\(g\)去掉\(<j\)的部分,合数暴力枚举所有\(\geqslant j\)的\(P_k\),以\(P_k\)为最小质因数,枚举其因子个数,剩余部分最小质因数\(\geqslant P_{k+1}\),由于两部分互质,满足积性函数,可以提出\(f(P_k^e)\)这一因子,但我们对于质数的幂漏算了,这里漏了\(e>1\)的情况。最终答案为\(s_{n,1}\)。
综上,问题解决。
模版题
定义积性函数\(f(x)\),对于所有的质数\(p\),有\(f(p^k)=p^k(p^k-1)\)成立,求
对\(10^9+7\)取模。
(先咕一下)