Min_25筛学习笔记

Min_25筛可以在\(O(\frac{n^\frac{3}{4}}{\log n})\)\(O(n^{1-\epsilon})\)?反正不会证)的时间内求出部分与素数有关的函数的前缀和。在常规范围内(一般\(10^{10}\)),它比洲阁筛不知道高到哪里去了

例:求积性函数\(f(x)\)的前\(n\)项和\((n\leqslant10^{10})\)

第一步:对于每个\(1\leqslant i\leqslant n\),都需要求出\(\sum_{p=1}^{n/i}[p\text{是素数}]f(p)\)

由于只用求素数处的值,可以找一个\(g(x)\)为完全积性函数,使得\(f(x)\)\(g(x)\)在素数处相等,且\(g(x)\)容易求前缀和。

\(p_i\)为第\(i\)个素数,\(minp_i\)表示\(i\)的最小质因数,\(s_i=\sum_{j=1}^{i}g(p_j)\)\(t_{i,j}=\sum_{w=2}^{n}[w\in p\;\text{or}\;minp_w>p_j]g(w)\)。显然,\(t_{i,0}=\sum_{w=1}^{i}g(w)-1\)

考虑如何由递推得到\(t_{i,j}\),可以看出\(t_{i,j}=t_{i,j-1}-(t_{\lfloor\frac{i}{p_j}\rfloor,j-1}-s_{j-1})\times g(p_j)\),即从\(t_{i,j-1}\)中减掉\(minp_x=p\)\(g(x)\)

但是,当\(\lfloor\frac{i}{p_j}\rfloor<p_{j-1}\)时,就会出现多减了的情况。仔细思考一下,当\(p_j^2\leqslant i\)\(p_{j+1}>i\)时,\(\forall x\in[2,i],minp_x\leqslant \sqrt{n}\),即\(minp_x\leqslant p_j\),就可以停止计算,此时\(\lfloor\frac{i}{p_j}\rfloor\geqslant p_j>p_{j-1}\),又由于\(p_i\)递增,所以不会多减。

容易发现,第一维\(i\)只有\(O(\sqrt{n})\)种取值,所以可以做一些映射,再用滚动数组优化掉第二维。设\(sum_i=t_{i,\infty}\)

复杂度:\(O(\text{不会证})\)

第二步:求\(\sum_{i=2}^nf(i)\)

\(sol(i,j)=\sum_{i=2}^n[w\in p\;\text{or}\;minp_w\geqslant p_j]f(i)\),则\(sol(i,j)=sum_i+\sum_{id=j,p_{id}^2\leqslant i}\sum_{k=1,p_{id}^{k+1}\leqslant i}(sol(\frac{i}{p_{id}^k},id+1)-s_{id})*f(p_{id}^k)+f(p_{id}^{k+1})\),即枚举最小质因数出现的次数。

复杂度:\(O(\text{还是不会证})\)

posted @ 2019-12-06 16:54  ztc…  阅读(175)  评论(0编辑  收藏  举报

Please contact lydsy2012@163.com!