• Min_25筛学习笔记


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

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

    第一步:对于每个(1leqslant ileqslant n),都需要求出(sum_{p=1}^{n/i}[p ext{是素数}]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}[win p; ext{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_{lfloorfrac{i}{p_j} floor,j-1}-s_{j-1}) imes g(p_j)),即从(t_{i,j-1})中减掉(minp_x=p)(g(x))

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

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

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

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

    (sol(i,j)=sum_{i=2}^n[win p; ext{or};minp_wgeqslant p_j]f(i)),则(sol(i,j)=sum_i+sum_{id=j,p_{id}^2leqslant 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( ext{还是不会证}))

  • 相关阅读:

    【工作】---前后端联调
    【react】---Immutable的基本使用
    【react】传值
    【原生】 HTML DOM 事件,各种事件类型、事件种类
    两台笔记本电脑之间实现屏幕扩展
    【看图学习后台管理系统】
    【bug】在react开发中,使用link 跳转中,无法点击跳转的问题
    【前端工程师】 web 安全问题
    【前端工程师】 性能和效率 优化的问题
  • 原文地址:https://www.cnblogs.com/ztc03/p/11996263.html
Copyright © 2020-2023  润新知