• 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{还是不会证}))

  • 相关阅读:
    阻止事件冒泡和默认行为,禁止键盘事件
    jquery移除、绑定、触发元素事件
    HTML`CSS_网站页面不同浏览器兼容性问题解决
    computed属性与methods、watched
    call()方法和apply()方法用法总结
    push()、shift()与pop()、unshift()、splice()
    vue指令总结
    fieldset标签
    mysql存储过程定义者
    数据库死锁
  • 原文地址:https://www.cnblogs.com/ztc03/p/11996263.html
Copyright © 2020-2023  润新知