之前学莫比乌斯反演的时候就被莫比乌斯函数震惊了,从f(x)=∑d|ng(d)反演出g(n)=∑d|nμ(d)×f(nd),给出了谜一般的μ(x)函数的定义,令人百思不得其解,感觉定义出莫比乌斯函数的人似乎对容斥原理有了高深的造诣。这里从狄利克雷卷积(Dirichlet卷积)出发,可以很自然地导出莫比乌斯函数,并得到莫比乌斯反演公式。
一些定义
积性函数
如果gcd(x,y)=1,且f(xy)=f(x)×f(y),则f(x)为积性函数。
数论函数
数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数——《百度百科》
总之可以理解为是定义域为正整数集的函数。
常见的数论函数:
单位函数:ϵ(n)=[n=1]
常数函数:1(n)=1
恒等函数:Id(n)=n
欧拉函数:φ(n)=n∑i=1[gcd(i,n)=1]
莫比乌斯函数:μ(n)
Dirichlet卷积
定义
f,g为两个数论函数,它们的Dirichlet卷积为:
(f∗g)(n)=∑d|nf(d)∗g(nd)
(可见它跟数的因子有很密切的关系)
其中单位函数ϵ(n)=[n=1]是Dirichlet卷积的单位元,即任何函数卷ϵ都得它本身。
可以理解卷积是一种运算,它的作用对象是函数。
性质
Dirichlet卷积满足交换律、结合律和分配律。
交换律
(f∗g)(n)=(g∗f)(n)
证明它不香吗?
证明:
由于d与nd有对称性,故
(f∗g)(n)=∑d|nf(d)×g(nd)=∑d|ng(d)×f(nd)=(g∗f)(n)
证毕。
结合律
((f∗g)∗h)(n)=(f∗(g∗h))(n)
证明它不香吗?
证明:
((f∗g)∗h)(n)=∑t×d3=n(∑d1×d2=tf(d1)×g(d2))×h(d3)=∑d1×d2×d3=nf(d1)×g(d2)×h(d3)=∑t×d1=nf(d1)×(∑d2×d3=tg(d2)×h(d3))=(f∗(g∗h))(n)
证毕。
分配律
((f+g)∗h)(n)=(f∗h)(n)+(g∗h)(n)
证明它不香吗?
证明:
((f+g)∗h)(n)=∑d|n(f(d)+g(d))×h(nd)=∑d|nf(d)×h(nd)+∑d|ng(d)×h(nd)=(f∗h)(n)+(g∗h)(n)
证毕。
两个积性函数的Dirichlet卷积仍然是积性函数。
证明它不香吗?
证明:
若gcd(x,y)=1,则f(xy)=f(x)×f(y),g(xy)=g(x)×g(y)。
则
(f∗g)(n)×(f∗g)(m)=∑d1|nf(d1)×g(nd1)×∑d2|mf(d2)×g(md2)=∑d1|n∑d2|mf(d1)×f(d2)×g(nd1)×g(md2)=∑d1|n∑d2|mf(d1d2)×g(nmd1d2)=∑d|nmf(d)g(nmd)=(f∗g)(nm)
证毕。
Dirichlet卷积的逆
类比算数运算上的a×b=1,如果两个数论函数的卷积后为单位1,即f∗g=ϵ(n省略),则g是f的逆,即g=f−1,我们考虑下如何去求f−1。
把f∗g=ϵ展开得∑d|nf(d)×g(nd)=ϵ(n),我们要求的是g(n),把它从和式分离出来得
f(1)×g(n)=ϵ(n)−∑d|n且d≠1f(d)×g(nd)
当f(1)≠0时,存在g(n)=1f(1)×⎛⎝ϵ(n)−∑d|n且d≠1f(d)×g(nd)⎞⎠,即
f−1(n)=1f(1)×⎛⎝ϵ(n)−∑d|n且d≠1f(d)×f−1(nd)⎞⎠
很显然当n=1时f−1(1)=1。
这就是Dirichlet卷积的逆公式。
从这里可以很容易证明,如果f(n)是积性函数,它的逆f−1(n)也是积性的,方法同第四条性质的证明方法。
莫比乌斯反演
讲了这么多,终于轮到莫比乌斯了。
已知f(n)=∑d|ng(d),求g(n)。
我们从Dirichlet卷积的角度去看式子,即是f=g∗1,即函数f(n)是g(n)与常数函数1(n)=1的Dirichlet卷积的结果。
我们要求g(n),我们可以在等式两边乘以常数函数的逆1−1(n),这样式子就变成了g∗(1∗1−1)=g=f∗1−1,这样我们就可以求得g(n),现在关键是如何求得1−1(n)。
由于1∗1−1=ϵ,根据上面的逆的公式得到
1−1(n)=11(1)×⎛⎝ϵ(n)−∑d|n且d≠n1(d)×1−1(nd)⎞⎠=⎛⎝ϵ(n)−∑d|n且d≠n1−1(nd)⎞⎠
我们记1−1(n)=μ(n)。
因为1(n)是积性函数,故其逆μ(n)也是积性的。
当n=1时,μ(1)=1。
当n>1时,ϵ(n)=0,μ(n)=−∑d|n且d≠1μ(nd)=−∑d|n且d≠nμ(d)
当n是质数时,μ(n)=−∑d|n且d≠nμ(d)=−μ(1)=−1。
当n是质数的幂时,设n=pc(c>1),则μ(pc)=−∑d|pc−1μ(d)=−μ(pc−1)−∑d|pc−2μ(d)=−μ(pc−1)+μ(pc−1)=0。
故如果n=∏ipcii∏jpj,其中ci>1,pi均是各异的质数,由于μ(n)是积性函数,则μ(n)=∏iμ(pcii)∏jμ(pj)=0×∏jμ(pj)=0。
当n=k∏i=1pi,根据其积性,可得μ(n)=k∏i=1μ(pi)=(−1)k,其中k是n质因数分解后互异质数的个数。
综上我们就可以得到μ(n)的表达式了。
莫比乌斯函数
设n=k∏i=1pcii
μ(n)=⎧⎨⎩1n=10∃i∈[1,k],ci>1(−1)k∀i∈[1,k],ci=1
由此我们就得到了常数函数1(n)的逆的表达式μ(n),所以g=f∗1−1=f∗μ,即g(n)=∑d|nf(d)∗μ(nd)。
这就是莫比乌斯反演中得到的公式以及μ(n)函数的由来了。
莫比乌斯反演还有另一种形式:
f(n)=∑n|dg(d),则g(n)=∑n|df(n)×μ(dn)。
然而就算知道这些你还是不会做题
由于μ∗1=ϵ,其中ϵ(n)当且仅当n=1时ϵ(n)=1,其余情况ϵ(n)=0,这与[gcd(i,n)=1]非常类似,因为也是只有当gcd(i,n)=1时[gcd(i,n)=1]=1,其余情况[gcd(i,n)=1]=0。
故对于[gcd(i,n)=1]我们可以把它替换成ϵ([gcd(i,n)=1]),再而换成∑d|gcd(i,n)μ(d),然后我们就可以搞事情了并不知道有什么用,看看下面吧。
欧拉函数
众所周知,φ(n)=n∑i=1[gcd(i,n)=1],我们将右式替换,得到
φ(n)=n∑i=1∑d|iμ(d)
然后我们再进行常规变换,改变求和的顺序,先枚举因子,然后看看这个因子出现了多少次。
φ(n)=n∑i=1∑d|gcd(i,n)μ(d)=∑d|nμ(d)×nd
把n移到左边就得到一个著名的式子
φ(n)n=∑d|nμ(d)d
莫比乌斯函数与欧拉函数就神奇的联系在一起了。
还是看上面的式子,写成Dirichlet卷积的形式就是
φ=μ∗Id
其中Id(n)=n。对这个式子我们两边再卷常数函数1得
φ∗1=1∗μ∗Id=ϵ∗Id=Id
即n=∑d|nφ(d)
欧拉函数还有另一种求法,根据欧拉函数的定义,
若n=p是质数,则φ(p)=p−1
若n=pc,由于p×i (i∈[1,pc−1])都是n的因子,根据容斥原理知φ(pc)=pc−pc−1=pc×(1−1p)。
若n=k∏i=1pcii,由于欧拉函数是积性函数,故φ(n)=k∏i=1φ(pcii)=k∏i=1pcii(1−1pcii)=nk∏i=1(1−1pcii)
总结
这篇文章讲了什么呢其实什么都没讲,其实就是从Dirichlet卷积的角度介绍了莫比乌斯函数μ(n)和莫比乌斯反演以及证明了关于欧拉函数φ(n)与莫比乌斯函数μ(n)的等式。至于题目,大都是要运用技巧和[gcd(i,n)=1]=∑d|gcd(i,n)μ(d)等式,进行各种变换,最后再预处理加上什么数论分块的做法解决的,但这并不是这篇文章的重点。
至于杜教筛,是用来解决某些特别的数论函数f(n)的S(n)=n∑i=1f(i)的方法,通过选择另外两个数论函数h(n),g(n),使得h=f∗g,从卷积的角度出发诱导出S(n)。至于如何选择h,g,卷积的恒等式:
ϵ=μ∗1
d=1∗1
σ=d∗1
φ=μ∗Id
Id=φ∗1
给我们指引了方向。具体的怎样留个坑qwq
其中d(n)表示n的因子个数,σ(n)表示n的因子和。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步