杜教筛 学习笔记

概述

我们想求 \(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)\)

posted @ 2025-02-20 15:13  01bit  阅读(14)  评论(0)    收藏  举报