数论函数前缀和

前言

下文\(*\)均指\(Dirichlet\) 卷积
\(\lfloor\frac{a}{b}\rfloor\) 简记为 \(\frac{a}{b}\)

杜教筛

首先对于我们要求前缀和的函数\(f\)
找出合适的函数\((f*g)\)\(g\)
且满足:

  1. \((f*g)\) 易求前缀和。
  2. \(g\) 易求前缀和。

\(f\)的前\(n\)项和为\(S(n)\)

\[\begin{aligned} \sum_{i=1}^{n}(f*g)(i) &=\sum_{i=1}^{n}\sum_{d|i}g(d)f(\frac{i}{d}) \\ &=\sum_{d=1}^{n} g(d) \sum_{i=1}^{\lfloor \frac{n}{d}\rfloor}f(i) \\ &=\sum_{d=1}^{n} g(d)S(\frac{n}{d}) \end{aligned} \]

移项得:

\[S(n)d(1)=\sum_{i=1}^{n}(f*g)(i)-\sum_{d=2}^{n} g(d)S(\lfloor \frac{n}{d}\rfloor) \]

\(PN\)

首先对于我们要求前缀和的积性函数\(f\)
找出合适的函数\(g\)
且满足:

  1. \(g\) 是积性函数。
  2. \(g\) 易求前缀和。
  3. 对于质数 \(p\) ,满足 \(g(p)=f(p)\)
    构造积性函数 \(h\) 满足 \(f=g*h\)

\[\begin{aligned} \sum_{i=1}^{n}f(i) &=\sum_{i=1}^{n}\sum_{d|i}h(d)g(\frac{i}{d}) \\ &=\sum_{d=1}^{n}h(d) \sum_{i'=1}^{\frac{n}{d}}g(i') \\ &=\sum_{d=1}^{n}h(d)G(\frac{n}{d}) \\ &=\sum_{d是PN数}^{n}h(d)G(\frac{n}{d}) \end{aligned} \]

计算 \(h(p^c)\)

\[f(p^c)=\sum_{i=1}^{c}h(p^i)g(p^{c-i}) \]

移项得:

\[d(p^c)=f(p^c)-\sum_{i=1}^{c-1}h(p^i)g(p^{c-i}) \]

【模板】Min_25 筛

\(Meissel-Lehmer\)

随便水水
\(dp_{i,j}\) 表示前 \(i\) 个数中不是前 \(j\) 个质数倍数的个数

\[\pi(n)=\pi(n^{\frac{1}{3}})+dp_{n,\pi(n^{\frac{1}{3}})}-1-\sum_{p>n^{\frac{1}{3}}}^{n^{\frac{1}{2}}}(\pi(\frac{n}{p})-\pi(p)+1) \]

\[dp_{i,j}=dp_{i,j-1}-dp_{\frac{i}{p_j},j-1} \]

减一是减去未被筛去的数字 \(1\) 的贡献。
再减去未被前 \(n^{\frac{1}{3}}\) 个质数筛掉的合数个数即为所求。

posted @ 2025-01-11 22:25  C_Wish  阅读(23)  评论(0)    收藏  举报