时刻记住狄利克雷卷积定义:c(n)=∑i∣na(i)b(ni)c(n)=\sum_ {i|n} a(i)b(\frac{n}{i})

(这里的 = 没有赋值的意思)
在本文中的一些基本定义:
e(x)=[x=1]e(x)=[x=1] (只有x=1时值才为一,其他时候值为0)

idk(x)=xkid_ k(x)=x^k

ϕ(x)=∑i=1x[gcd(i,x)=1]\phi(x)=\sum_ {i=1}^{x} [gcd(i,x)=1]

a⊗ba \otimes b表示aa和bb的狄利克雷卷积

任何函数⊗e\otimes e还是它本身,所以ee是单位元。
看到∑i∣nf(i)\sum_ {i|n}f(i) 时可以想一想是不是f⊗id0f \otimes id_ 0(记住卷积定义)

几个微小的证明


∑d∥nμ(d)=[n=1]\sum_ {d\|n}\mu(d)=[n=1]
(μ⊗id0=e\mu \otimes id_ 0=e)

现在江将nn进行质因数分解,得到:
n=p1m1p2m2..pkmkn=p_ 1^{m_ 1}p_ 2^{m_ 2}..p_ k^{m_ k}
令n∗=p1p2..pkn^*=p_ 1p_ 2..p_ k

根据μ\mu的定义,假如说dd有平方项,那μ(d)\mu(d)为零。
所以∑d∣nμ(d)=∑d∣n∗μ(d)=∑i=0k(ik)(−1)i\sum_ {d|n} \mu(d)=\sum_ {d|n^*} \mu(d)=\sum_ {i=0}^k (^k_ i)(-1)^i
观察二项式展开的样子:
(1+x)k=∑i=0k(ik)xi(1+x)^k=\sum_ {i=0}^k(^k_ i)x^i
把x=−1x=-1带进来
所以∑d∣nμ(d)=(1−1)k\sum_ {d|n} \mu(d)=(1-1)^k


现在有函数F(x)=∑i∥xf(i)F(x)=\sum_ {i\|x} f(i),知道F(x)F(x)要求f(x)f(x)
把原式子写成卷积的形式:F=f⊗id0F=f \otimes id_ 0
同时卷一下μ\mu
F⊗μ=f⊗id0⊗μF \otimes \mu = f \otimes id_ 0 \otimes \mu
然而前面证明了μ⊗id0=e\mu \otimes id_ 0=e
所以F⊗μ=f⊗e=fF \otimes \mu=f \otimes e =f
反…反演

计算一类积性函数的前缀和


这里定义FF是ff的前缀和。
现在,对于一个函数ff,找两个易求前缀和的函数f∗f^*和f+f^+,使得:

f∗⊗f=f+f^* \otimes f =f^+

则F+(n)=∑i=1n∑d∥iF^+(n)=\sum_ {i=1}^n \sum _{d\|i}f(d)f∗(id)f(d)f^*(\frac{i}{d})

把对每个数枚举因数改为枚举因数找倍数
F+(n)=∑1=1nf∗(i)∑j=1⌊ni⌋f(j)=∑i=1nf∗(i)F(⌊ni⌋)F^+(n)=\sum_ {1=1}^nf^ *(i) \sum_ {j=1}^{\lfloor \frac{n}{i} \rfloor}f(j)=\sum_ {i=1} ^nf^ *(i)F(\lfloor \frac{n}{i} \rfloor)
把i=1i=1的情况单独提取出来
F+(n)=f∗(1)F(n)+∑i=2nf∗(i)F(⌊ni⌋)F^ +(n)=f^ *(1)F(n)+\sum_ {i=2} ^nf^ *(i)F(\lfloor \frac{n}{i} \rfloor)
对于积性函数有一个很显然的性质:a(1)a(1)=1或0,否则不满足f(a)∗f(b)=f(ab)f(a) * f(b)=f(ab)
为0时没有任何意义,所以我们构造的时候不会选择一个f(x)=0f(x)=0的函数,所以
F+(n)=F(n)+∑i=2nf∗(i)F(⌊ni⌋)F^ +(n) = F(n)+\sum_ {i=2} ^nf^ *(i)F(\lfloor \frac{n}{i} \rfloor)
F(n)=F+(n)−∑i=2nf∗(i)F(⌊ni⌋)F(n)=F^ +(n)-\sum_ {i=2} ^nf^ *(i)F(\lfloor \frac{n}{i} \rfloor)
这样先递推F(n)F(n)到n23n^{\frac{2}{3}}级别的位置
然后记忆化一下 F(⌊ni⌋)F( \lfloor \frac{n}{i} \rfloor )