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\),否则不存在这样的合数,无需筛掉,总结一下

\[g_{n,i}= \begin{cases} g_{n,i-1} & P_i^2>n\\ g_{n,i-1}-F(P_i)\times\left(g_{\lfloor\frac{n}{P_i}\rfloor,i-1}-g_{P_i-1,i-1}\right) &P_i^2\leqslant n \end{cases} \]

  注意要单独考虑\(1\)的情况。这样,这步的答案即可得到。

  再把剩下的合数的贡献补上来,同样,我们设\(s_{i,j}=\sum_{k\leqslant i\&\&minP_k\geqslant j}f(i)\),跟上面类似,条件由“\(>\)”变成了“\(\geqslant\)”,并且删掉了\(k\in Prime\)的条件。注意这里求的函数\(f\)而不是\(F\)了。同样我们列出来\(s\)的关系式

\[s_{n,j}=g_{n,\mid P\mid}-\sum_{i=1}^{j-1}F(P_j)+\sum_{k\geqslant j,P_k^e\leqslant n}f(P_k^e)\left(s_{\lfloor\frac{n}{P_k^e}\rfloor,k+1}+[e>1]\right) \]

  这里表示的意思是:拆成质数+合数,质数通过\(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)\)成立,求

\[\sum_{i=1}^nf(x) \]

  对\(10^9+7\)取模。

(先咕一下)
posted @ 2020-04-11 10:45  AC-Evil  阅读(194)  评论(0编辑  收藏  举报