「杜教筛」学习笔记

杜教筛

对于一个数论函数 \(f\) 我们希望求其前缀和,
这时可以引出另一个数论函数 \(g\)

则我们可以得到: \(\sum_{i=1}^{n}\sum_{d|i}g(d)f(\left \lfloor \frac{i}{d} \right \rfloor)=\sum_{i=1}^{n}g(i)S(\left \lfloor \frac{n}{i} \right \rfloor)\)

把第一个式子卷一下: \(\sum_{i=1}^{n}(f*g)(i)=\sum_{i=1}^{n}g(i)S(\left \lfloor \frac{n}{i} \right \rfloor)\)

那对于 \(S(n)\) 我们显然有 \(g(1)S(n)=\sum_{i=1}^{n}(f*g)(i)-\sum_{i=2}^{n}g(i)S(\left \lfloor \frac{n}{i} \right \rfloor)\)

则我们可以得到杜教筛的最终式子:

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

莫比乌斯函数前缀和

因为我们有 \(\mu*I=\epsilon\), 那么令 \(g\) 为 \(I\),直接套入公式就好了。

欧拉函数前缀和

引入公式: \(\varphi*I=id\)。

这里给出两种证明方式:

1.

令 \(f=\varphi*I=\sum_{d|n}\varphi(d)\)

显然积性函数的积为积性函数,所以 \(f\) 为积性函数。

令 \(n=\prod_{i=1}^{k}p_{i}^{a_{i}}\)

则 \(f(n)=\prod_{i=1}^{k}f(p_{i}^{a_{i}})\)

\(f(p^{k})=\sum_{d|p^{a}}\varphi(d)=\varphi(1)+\sum_{i=1}^{k}\varphi(p^{i})=\varphi(1)+\sum_{i=1}^{k}(p^{i}-p^{i-1})=p^{k}\)

则: \(f(n)=\prod_{i=1}^{k}f(p_{i}^{a_{i}})=\prod_{i=1}^{k}p^{a_{i}}=n=id(n)\)

2.

构造式子: \(\frac{1}{n}+\frac{2}{n}+\frac{3}{n}+...+\frac{n-1}{n}+\frac{n}{n}\)
对于每个分数,我们把他化简成最简分数形式
则对于每个分母 \(i\) 存在的次数为 \(\varphi(i)\) 次,
首先在这些分数中,分子是一定小于分母的,那如果 \(j\) 可以作为 \(i\) 的分子,那么 \(i\) 一定与 \(j\) 互质

剩下的带入公式就好了

参考文献:
杜教筛-OI Wiki [https://oi-wiki.org/math/number-theory/du/]

上一篇:AtCoder ABC 165 D - Floor Function (Good, 手动模拟推出公式)


下一篇:luogu P4240