杜教筛
我不会什么狄利克雷卷积,但同我反演只用(sum_{d|n}mu(d)=(n==1))这条式子一样,我觉得杜教筛也是相似的。
例题1:
(sum_{i=1}^{n}mu(i))范围:(nle10^{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}^nmu(i)
]
[=sum_{i=1}^n((i==1)-sum_{d|i&d<i}mu(d))
]
[=1-sum_{i=1}^nsum_{d|i&d<i}mu(d)
]
那么,对于(mu(d))来说,它只有在(d|i且d<i)时才会被计算
换句话说,(mu(d))会在(xdle n)时被计算上((x>1))
那么我们枚举(x)
原式既等于
[=1-sum_{x=2}^nsum_{xd<=n}mu(d)
]
[=1-sum_{x=2}^nsum_{d=1}^{lfloorfrac{n}{x}
floor}mu(d)
]
稍微换一下符号
[=1-sum_{x=2}^{n}sum_{i=1}^{lfloorfrac{n}{x}
floor}mu(i)
]
然后我们发现
woc右边那一块式子怎么那么熟悉((sum_{i=1}^{lfloorfrac{n}{x} floor}mu(i)))
就好像……,就好像最开始要求的那样
那么我们设最开始的为一个函数:
[f(n)=sum_{i=1}^nmu(i)=1-sum_{x=2}^{n}sum_{i=1}^{lfloorfrac{n}{x}
floor}mu(i)=1-sum_{x=2}^nf(lfloorfrac{n}{x}
floor)
]
那么,总共有根号不同的对于每个(f(n))来说,我们最多要求根号级别的(f(lfloorfrac{n}{x} floor))
预处理前(n^{frac{2}{3}})的(f),然后记忆化搜索即可(后面的f的函数值用哈希表来存(或者map,不过多一个log))
例题2:
(sum_{i=1}^{n}varphi(i))范围:(nle10^{10})
题解:
引入:$$sum_{d|n}varphi(d)=n$$
[varphi(n)=n-sum_{d|n&d<n}varphi(d)
]
原式=$$sum_{i=1}^n(i-sum_{d|ni&d<i}varphi(i))$$
枚举dx对数
[frac{n imes(n+1)}{2}-sum_{x=2}^nsum_{dx<=n}varphi(d)
]
[=frac{n imes(n+1)}{2}-sum_{x=2}^nsum_{d=1}^{lfloorfrac{n}{x}
floor}varphi(d)
]
[=frac{n imes(n+1)}{2}-sum_{x=2}^nsum_{i=1}^{lfloorfrac{n}{x}
floor}varphi(i)
]
设原式=(f(x))
[f(n)=frac{n imes(n+1)}{2}-sum_{x=2}^nsum_{i=1}^{lfloorfrac{n}{x}
floor}varphi(i)=frac{n imes(n+1)}{2}-sum_{x=2}^nf(lfloorfrac{n}{x}
floor)
]
记忆化搜索即可