杜教筛

Posted 玄方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杜教筛相关的知识,希望对你有一定的参考价值。

杜教筛?

我不会什么狄利克雷卷积,但同我反演只用\(\sum_{d|n}\mu(d)=(n==1)\)这条式子一样,我觉得杜教筛也是相似的。

例题1:

\(\sum_{i=1}^{n}\mu(i)\)范围:\(n\le10^{10}\)

题解:

引入式子\(\sum_{d|n}\mu(d)==(n==1)\)

:这条以及后文引入的两条式子可在莫比乌斯反演那篇博文里看到证明

考虑\(\mu(n)\)\(\mu(n)=(n==1)-\sum_{d|n\&d<n}\mu(d)\)

那么将\(\mu(n)\)代入原式

\[\sum_{i=1}^n\mu(i)\]

\[=\sum_{i=1}^n((i==1)-\sum_{d|i\&d<i}\mu(d))\]

\[=1-\sum_{i=1}^n\sum_{d|i\&d<i}\mu(d)\]

那么,对于\(\mu(d)\)来说,它只有在\(d|i且d<i\)时才会被计算

换句话说,\(\mu(d)\)会在\(xd\le n\)时被计算上(\(x>1\)

那么我们枚举\(x\)

原式既等于

\[=1-\sum_{x=2}^n\sum_{xd<=n}\mu(d)\]

\[=1-\sum_{x=2}^n\sum_{d=1}^{\lfloor\frac{n}{x}\rfloor}\mu(d)\]

稍微换一下符号

\[=1-\sum_{x=2}^{n}\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\mu(i)\]

然后我们发现

woc右边那一块式子怎么那么熟悉(\(\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\mu(i)\)

就好像……,就好像最开始要求的那样

那么我们设最开始的为一个函数:

\[f(n)=\sum_{i=1}^n\mu(i)=1-\sum_{x=2}^{n}\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}\mu(i)=1-\sum_{x=2}^nf(\lfloor\frac{n}{x}\rfloor)\]

那么,总共有根号不同的对于每个\(f(n)\)来说,我们最多要求根号级别的\(f(\lfloor\frac{n}{x}\rfloor)\)

预处理前\(n^{\frac{2}{3}}\)\(f\),然后记忆化搜索即可(后面的f的函数值用哈希表来存(或者map,不过多一个log))

例题2:

\(\sum_{i=1}^{n}phi(i)\)范围:\(n\le10^{10}\)

题解:

引入:\[\sum_{d|n}phi(d)=n\]

\[phi(n)=n-\sum_{d|n\&d<n}phi(d)\]

原式=\[\sum_{i=1}^n(i-\sum_{d|ni\&d<i}phi(i))\]

枚举dx对数

\[\frac{n\times(n+1)}{2}-\sum_{x=2}^n\sum_{dx<=n}phi(d)\]

\[=\frac{n\times(n+1)}{2}-\sum_{x=2}^n\sum_{d=1}^{\lfloor\frac{n}{x}\rfloor}phi(d)\]

\[=\frac{n\times(n+1)}{2}-\sum_{x=2}^n\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}phi(i)\]

设原式=\(f(x)\)

\[f(n)=\frac{n\times(n+1)}{2}-\sum_{x=2}^n\sum_{i=1}^{\lfloor\frac{n}{x}\rfloor}phi(i)=\frac{n\times(n+1)}{2}-\sum_{x=2}^nf(\lfloor\frac{n}{x}\rfloor)\]

记忆化搜索即可

复杂度分析:不会,大概调一下预处理的参数,别的博客上面证明是\(O(n^{\frac{2}{3}})\)左右。

核心:乱推式子+记忆化搜索

以上是关于杜教筛的主要内容,如果未能解决你的问题,请参考以下文章

hdu5608杜教筛

杜教筛

杜教筛

浅谈杜教筛

数论狄利克雷卷积及其快速计算方法及杜教筛

杜教筛