1. 程式人生 > 其它 >「杜教篩」學習筆記

「杜教篩」學習筆記

杜教篩

對於一個數論函式 \(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/]