杜教筛 学习笔记
概述
我们想求 \(S(n)=\sum\limits_{i=1}^nf(i)\) 的值。
考虑构造 \(S(n)\) 关于 \(S(\lfloor n/i\rfloor)\) 递推式,这样就可以用整除分块了。
设计两个函数 \(g\) 和 \(h\) 使得 \(h=g*f\)。
根据卷积定义,有 \(h(i)=\sum\limits_{d|i}g(d)f(i/d)\)。
所以:
\[\begin{aligned}
\sum\limits_{i=1}^nh(i)&=\sum\limits_{i=1}^n\sum\limits_{d|i}^ig(d)f(i/d)\\
&=\sum\limits_{i=1}^ng(d)\sum\limits_{d|i}^nf(i/d)\\
&=\sum\limits_{d=1}^ng(d)\sum\limits_{i=1}^{\lfloor n/d\rfloor}f(i)\\
&=\sum\limits_{d=1}^ng(d)S(\lfloor n/d\rfloor)
\end{aligned}
\]
将式子中的 \(g(1)S(n)\) 提出来,得 \(g(1)S(n)=\sum\limits_{i=1}^nh(i)-\sum\limits_{d=2}^ng(d)S(\lfloor n/d\rfloor)\)。
欧拉函数求和
欲求 \(\sum\limits_{i=1}^{n}\varphi(i)\) 的值。
想到欧拉函数性质:\(n=\sum\limits_{d|n}\varphi(d)\)。
设 \(g=I\),直接套用公式,得 \(S(n)=\sum\limits_{i=1}^n i-\sum\limits_{d=2}^nS(\lfloor n/d\rfloor)\)。
莫比乌斯函数
欲求 \(\sum\limits_{i=1}^{n}\mu(i)\) 的值。
想到莫比乌斯函数性质:\([n=1]=\sum\limits_{d|n}\mu(d)\)。
设 \(g=I\),直接套用公式,得 \(S(n)=1-\sum\limits_{d=2}^nS(\lfloor n/d\rfloor)\)。

浙公网安备 33010602011771号