1. 程式人生 > >初涉莫比烏斯反演(附帶例題)

初涉莫比烏斯反演(附帶例題)

什麼是莫比烏斯反演

關於莫比烏斯反演

莫比烏斯反演,又稱懵逼鎢絲繁衍,是一種看了就一臉懵逼的東西。
好吧好吧,嚴肅點。(不過因為本蒟蒻真的很懵逼,所以錯誤之處請大神指出)
莫比烏斯反演就是下面這個式子:
如果存在函式F(x)和f(x),滿足

F(n)=d|nf(d)
那麼就有:
f(n)=d|nμ(d)F(nd)
或者如果F(x)和f(x)滿足:
F(n)=n|df(d)
那麼:
f(n)=n|dμ(dn)F(d)
其中μ()函式是莫比烏斯函式,定義是:
如果
d=1
μ(d)=1
如果d為互異質數p1,p2pk的乘積,則μ(d)=(1)k
否則,μ(d)=0
所以線性篩莫比烏斯函式往後看,幾乎每段程式碼裡都有。

兩條性質

好了,現在補充兩條(我不會證,不過腦補一下就好了吧的)性質:
1.如果n>1n為正整數,則有:

d|nμ(d)=0
如果n=1則上式為1.
2.對於任意正整數n均有:
d|nμ(d)d=ϕ(n)n
(其實證明應該和莫比烏斯函式的構造方法有關。有的時候,不要什麼東西都想著要明白是怎麼證的,畢竟你現在學的東西,是前人經過幾年甚至幾十年才搞出來的,有的真的沒辦法一朝一夕就會證明。我才不是為我不會證開脫
)

證明莫比烏斯反演

有了上面兩條我不會證的性質之後,我們就可以證一下莫比烏斯反演了。
由F(x)函式的定義可以得到:

d|nμ(d)F(nd)=d|nμ(d)d|ndf(d)
接下來我們讓nd=kd,那麼d=nkd,所以就有d|nd,而每個f(d)一定會和一個μ(d)乘一次,所以: