杜教筛
杜教筛
简介
杜教筛是一种亚线性的数论函数前缀和算法,它利用狄利克雷卷积构造递推式,配合整除分块与记忆化搜索,可做到 \(O(n^{2/3})\) 的时间复杂度。
其核心思想是构造两个辅助函数 \(g,h\),满足 \(h=f*g\),且 \(h,g\) 的前缀和容易计算,从而通过卷积恒等式推导出 \(\sum f_i\) 的递推式,递归求解。
推导
- 卷积前缀和
对 \(h\) 求前缀和 \(H(n)\):
\[H(n) = \sum_{i=1}^n \sum_{d|i} f(d) \cdot g(\frac{i}{d})
\]
- 交换求和顺序(记 \(F(i) = \sum f_i\))
\[H(n) = \sum_{d=1}^n g(d) \sum_{k=1}^{\lfloor \frac{n}{d} \rfloor} f(k) \\
= \sum_{d=1}^n g(d) \cdot F(\lfloor \frac{n}{d} \rfloor)
\]
- 得到递推式
提出 \(d=1\):
\[H(n) = g(1) \cdot F(n) + \sum_{d=2}^n g(d) \cdot F(\lfloor \frac{n}{d} \rfloor) \\
\Downarrow \\
g(1) \cdot F(n) = H(n) - \sum_{d=2}^n g(d) \cdot F(\lfloor \frac{n}{d} \rfloor)
\]
若 \(g\) 是积性函数(一般而言如此),则 \(g(1)=1\),故我们得到了 \(F(n)\) 的递推式。
例题选讲
- P6055 [RC-02] GCD(双射思想证明等式)
\[\sum_{i=1}^N\sum_{j=1}^N\sum_{p=1}^{\lfloor\frac{N}{j}\rfloor}\sum_{q=1}^{\lfloor\frac{N}{j}\rfloor}[\gcd(i,j)=1][\gcd(p,q)=1] \\
= \sum_{i=1}^N \sum_{j=1}^N \sum_{p=1}^{N} \sum_{q=1}^N [\gcd(i,j)=1][\gcd(p,q)=j] \\
= \sum_{i=1}^N \sum_{p=1}^N \sum_{q=1}^N [\gcd(i,\gcd(p,q))=1] \\
= \sum_{i=1}^N \sum_{p=1}^N \sum_{q=1}^N [\gcd(i,p,q)=1] \\
= \sum_{i=1}^N \sum_{p=1}^N \sum_{q=1}^N \sum_{d \mid \gcd(i,p,q)} \mu(d) \\
= \sum_{d=1}^N \mu(d) \lfloor \frac{N}{d} \rfloor ^3
\]
整除分块 + 杜教筛即可。
- P3768 简单的数学题(消元构造法)
\[\left(\sum_{i=1}^n\sum_{j=1}^n ij \gcd(i,j)\right) \bmod p \\
= \left(\sum_{i=1}^n\sum_{j=1}^n ij \sum_{d \mid \gcd(i,j)} \varphi(d) \right) \bmod p \\
= \left(\sum_{d=1}^n d^2 \varphi(d) \left( {\sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} i} \right)^2 \right) \bmod p \\
= \left(\sum_{d=1}^n d^2 \varphi(d) \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} i^3 \right) \bmod p \\
\]
后面这个东西是立方和公式 \(\sum_{i=1}^{n} i^3 = (\frac{n+1}{2})^2\),这也解释了它为啥等于 \((\sum_{i=1}^n i)^2\)。
前面这个呢我们考虑杜教筛处理。看到 \(d^2\),考虑构造 \(g(n)=n^2\),然后代入 \(\frac{n}{d}\),这样就能消掉 \(d^2\) 啦:
\[\sum_{d \mid n} d^2 \varphi(d) g(\frac{n}{d}) \\
= n^2 \sum_{d \mid n} \varphi(d) \\
= n^3
\]
这表明 \(H(n)=n^3\),而 \(g(n)=n^2\),直接代入杜教筛公式求解即可。
总结一下这一篇的恒等式:
\[(\sum_{i=1}^n i)^2 = \sum_{i=1}^{n} i^3 = (\frac{n+1}{2})^2 \\
\sum_{i=1}^n i^2 = \frac{n(n+1)(2n+1)}{6} \\
\sum_{k=1}^N \sum_{i=1}^{\lfloor \frac{N}{k} \rfloor} \sum_{j=1}^{\lfloor \frac{N}{k} \rfloor} [\gcd(i,j) = k] = N^2
\]
完结撒花!
浙公网安备 33010602011771号