Min25筛

Posted leukocyte

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Min25筛相关的知识,希望对你有一定的参考价值。

  顾名思义,这是(min25dalao)发明的算法,可以用来处理一些积性函数求和的问题。

  • 用途
    我们现在有一个积性函数(F(x)),要我们快速计算前缀和,即求

[sum_{i=1}^{n} F(i) ]

  • 前置知识
    数论函数基本性质,比较基础就不说了...

  • 使用前提
    (1.forall p in prime F(p))是一个低阶多项式
    (2.forall p in prime,k in N_+ F(p^k))可以快速求出
    (条件说实话还是比较严苛的...)

  • 解决问题
    我们明确了一些大前提,那么到底该怎么实现呢?
    首先将和式拆开,即分成

[sum_{p in prime} F(p) + sum_{i otin prime} F(i) ]

  先考虑前半部分,也就是所有质数上的值。

  • (step 1) 求解质数
    考虑构造一个完全积性函数(F‘(x)),使得(forall p in prime,F‘(p)=F(p))
    那么我们只要求出(F‘(x))在所有质数上的值即可
    这里我们运用(DP)的思想,设

[g(n,m)=sum_{i=1}^{n} F‘(i)[i in prime | minp(i)>p_m] ]

  那么可以得到转移

[g(n,m)=egin{cases} g(n,m-1)&p_m>sqrt{n}g(n,m-1)-F‘(p_m)[g(frac{n}{p_m},m-1)-g(p_m-1,m-1)]&p_m<=sqrt{n} end{cases} ]

  我们设(k = max){(k|p_k<=sqrt{n})}
  则答案显然为(g(n,k))
  这样前半部分就结束了,我们接下来考虑求解整个函数。

  • (step 2) 求解答案
    我们可以考虑和求质数的值一样的方法,设

[S(n,m)=sum_{i=1}^{n}F(i)[minp(i)>p_m] ]

  那么可以得到转移

[S(n,m)=g(n,k)-sum_{i=1}^{m-1}F(p_i)+sum_{i>m} sum_{e} F(p_i^e)(S(frac{n}{p_i^e},i)+[e>1]) ]

  这样我们就做完了。

yyb的博客
GuessYCB的博客


















以上是关于Min25筛的主要内容,如果未能解决你的问题,请参考以下文章

min25筛

min25筛学习总结

Min_25筛

Min25筛

Min25筛

min25筛