288 字
1 分钟
Min25 筛法的原理与应用
2019-08-11

0. 定义#

P\mathbb{P} 表示质数集

1. 用途#

Min25筛是一种求积性函数f(x)f(x)的前缀和∑i=1Nf(i)\sum_{i=1}^{N}{f(i)}的一种方法。

2. 条件#

  1. f(n)f(n) 为积性函数 (废话)
  2. f(p)f(p) 在pp处为关于pp的低次多项式

3. 做法#

首先, 我们定义一个函数gk(n,m)=∑i=1nik[i∈P  or  M(i)>Pm]g_k(n, m) = \sum_{i=1}^{n}{i^k[i \in \mathbb{P}\;or\;M(i) > P_m]}

  • 当 n<Pm2n < P_m^2 时 gk(n,m)=gk(n,m−1)g_k(n, m) = g_k(n, m - 1)
  • 否则我们要从gk(n,m)g_k(n, m)中删除M(i)=PmM(i)=P_m的合数的贡献,也就是

∑i=1nik[i∈C  and  M(i)=Pm]=Pmk(gk(⌊nPm⌋,m−1)−∑i=1m−1Pik)\sum_{i=1}^{n}{i^k[i \in \mathbb{C}\;and\;M(i) = P_m]} =P_m^k(g_k(\lfloor\frac{n}{P_m}\rfloor, m - 1)-\sum_{i=1}^{m-1}{P_i^k})

之后,我们要计算我们的函数f(x)f(x)

我们定义h(n,m)=∑i=1nf(i)[M(i)≥Pm]h(n, m)=\sum_{i=1}^n{f(i)[M(i) \ge P_m]}

  • 先考虑质数,因为f(p)f(p) 满足第二个条件, 所以我们可以用gg函数构造出f(p)f(p)的答案。

    • 那么设f(p)=∑ak∗pkf(p) = \sum{a_k*p^k}
    • 则可以得出∑i=m∣P∣f(Pi)[Pi<n]=∑ak∗gk(n,∣P∣)−∑i=1m−1f(Pi)\sum_{i=m}^{|P|}{f(P_i)[P_i<n]} = \sum{a_k*g_k(n, |P|) - \sum_{i=1}^{m-1}{f(P_i)}}
  • 然后考虑合数

    • 枚举合数的最小质因子为PiP_i, 和最小质因子的次数为tt,
      可以将合数写为Pit×j(M(j)≥Pi+1,j≤⌊nPit⌋)P_i^t \times j (M(j) \ge P_{i+1}, j \le \lfloor \frac{n}{P_i^t} \rfloor)
    • 则这些合数的贡献为 f(Pit)((∑j=1nPitf(j)[M(j)≥Pi+1])+[t≠1])=f(Pit)(h(⌊nPit⌋,i+1)+[t≠1])f(P_i^t)((\sum_{j=1}^{\frac{n}{P_i^t}}{f(j)[M(j) \ge P_{i+1}]}) + [t \neq 1]) = f(P_i^t) (h(\lfloor \frac{n}{P_i^t} \rfloor, i + 1) + [t \neq 1])
  • 综合一下

h(n,m)=∑akgk(n,∣P∣)−∑i=1m−1f(Pi)+∑i=m∣P∣∑t≥1,Pit≤nf(Pit)(h(⌊nPit⌋,i+1)+[t≠1])h(n,m) =\sum{a_kg_k(n, |P|)}-\sum_{i=1}^{m-1}{f(P_i)}+\sum_{i=m}^{|P|}{\sum_{t \ge 1 , P_i^t \le n}{f(P_i^t)(h(\lfloor \frac{n}{P_i^t} \rfloor, i + 1) + [t \neq 1])}}

Min25 筛法的原理与应用
https://www.nekomio.com/posts/154/
作者
NekoMio
发布于
2019-08-11
许可协议
CC BY-NC-SA 4.0