2017 CDQZ 聯訓 中向 HSZX 的大佬請教了一些關於莫反的知識,特此感謝!
本文僅介紹一些關於莫比烏斯反演的基礎知識。
聲明
本文中,若無特殊聲明pa11⋅pa22⋅...⋅Pakk 表示一個數的質因數分解,∀i,prime(pi)∧ai∈N+
莫比烏斯函數
定義
莫比烏斯函數是在數論中一個很重要的積性函數,定義如下。
若正整數x可質因數分解爲:
x=pa11⋅pa22⋅...⋅Pakk
μ(x)=⎧⎩⎨0:∃ai≥21:k≡0mod2−1:k≡1mod2
即當x≠1 ,且不存在平方因子時:
μ(x)=(−1)k
當x存在平方因子時:
μ(x)=0
特殊地:
μ(1)=1
一些性質
此性質可用來判斷一個數是否等於一。
∑d|nμ(d)=[n=1]
證明:
當n=1 時顯然成立。
當n≠1 時,不妨令n=pa11⋅pa22⋅...⋅Pakk ,那麼n的因子d=pb11⋅pb22⋅...⋅Pbkk,0≤bi≤ai 。
若∃bi≥2,μ(d)=0 對答案沒有貢獻。
因此,對答案有貢獻d一定滿足∀bi∈0,1 。
枚舉每一個有貢獻的d,就相當於是從bi 中選出若干個置爲1,其他的置爲0。
從k個位置中選出j個位置的方案數爲Cjk ,而一個由j個質因子組成的數d,有μ(d)=(−1)j 。所以,所有由j個質數組成的d對答案的貢獻和爲Cjk⋅(−1)j 。
因爲 j∈{0,1,2,...,k} ,所以:
∑d|nμ(d)=∑j=0kCjk⋅(−1)j
根據二項式定理:
∑j=0kCjk⋅xj=(x+1)k
所以:
∑d|nμ(d)=∑j=0kCjk⋅(−1)j=((−1)+1)k=0
得證。
歐拉函數
定義
φ(x),x∈N+ 表示小於x且與x互質的數的個數。
特殊地
φ(1)=1
一些性質
積性函數の積性
gcd(a,b)=1→φ(ab)=φ(a)⋅φ(b)
證明很顯然。
2018.3.16 填坑,後來我驚奇得發現這一點都不顯然。。
令gcd(n,m)=1 , 考慮φ(n⋅m) 的物理意義。
1 2 3 ... r ... m-1 m
m+1 m+2 m+3 ... m+r ... 2m-1 2m
2m+1 2m+2 2m+3 ... 2m+r ... 3m-1 3m
. . . . .
. . . . .
. . . . .
(n-1)m+1 (n-1)m+2 (n-1)m+3 ... (n-1)m+r ... nm-1 nm
φ(n⋅m) 的物理意義爲上表中與nm互質的數的個數。
因爲n和m互質,所以不難證明:一個數x與nm互質的充要條件爲x與n互質且x與m互質。
證明:設P(x)爲x的質因子集合。因爲n和m互質,所以P(n)∩P(m)=ϕ , P(n⋅m)=P(n)∪P(m)
gcd(x,n)=1⇔P(x)∩P(n)=ϕ
gcd(x,m)=1⇔P(x)∩P(m)=ϕ
P(n)∩P(m)=ϕ,P(x)∩(P(n)∪P(m))=ϕ⇔P(x)∩P(n)=ϕ,P(x)∩P(m)=ϕ
得證。
發現每一列元素與m的gcd都相同,考慮有哪些列是與m互質的。根據定義,這樣的列有φ(m) 列。
再考慮這些列中的每一列中與n互質的數的個數,因爲每一橫行的數在模n意義下同餘。所以每一列有φ(n) 個元素與n互質。綜上,φ(n⋅m)=φ(n)⋅φ(m) ,及歐拉函數爲積性函數。
補坑結束。
另外,當p爲質數時:
φ(p)=p−1
這更加顯然。
另一個基本性質
x=pa11⋅pa22⋅...⋅pakk,d=pi
φ(x⋅d)=φ(x)⋅d
證明:
首先t=paii→φ(t)={1:ai=0(pi−1)⋅pai−1i:ai>0 ,pi 是質數。
考慮把一個數化成pi 進制數,t一定能表示成一個1後面ai 個0的形式。對於任意的一個小於t的數d與t互質,當且僅當把t化成pi 進制後最後一位不爲零。所以說d這個ai 位pi 進制數,除了最低位不能爲0,有pi−1 種可能外,其它的位是什麼都可以,各有pi 種可能。因此上式成立。
這樣的話就有:φ(pk+1i)=φ(pki)⋅pi ,k∈N+
φ(x⋅d)=φ((pa11⋅pa22⋅...pai−1i−1⋅pai+1i+1...⋅pakk)×pai+1i)=φ(pa11⋅pa22⋅...pai−1i−1⋅pai+1i+1...⋅pakk)×φ(p(ai)+1i)=φ(pa11⋅pa22⋅...pai−1i−1⋅pai+1i+1...⋅pakk)×φ(paii)⋅pi=φ(x)⋅d
得證。
還有一個比較重要的性質:
∑d|nφ(d)=n
哪位大神能教我一下這個怎麼證啊!留坑待補。
[2018.1.22] 在此補坑。前幾天碰巧在學校遇到了樊神,向樊神請教了一番,樊神幾句話就證出來了,真是佩服。
令 f(n)=∑d|nφ(d) ,顯然有f(1)=1 。
對於一個質數p ,f(p)=φ(1)+φ(p)=1+(p−1)=p ,顯然成立。
數學歸納一下,對於一個質數的若干次冪pk ,若此性質已經對pk−1 成立:
有f(pk)=∑kt=0φ(pt)=φ(pk)+∑k−1t=0φ(pt)=φ(pk)+f(pk−1)=(p−1)⋅pk−1+pk−1=pk 。
又因爲該性質對k=1成立,所以該性質對任意正整數k成立。
對於一個數n,n與pk (p爲素數)互質,那麼這個數的所有因子一定能寫成n的所有因子乘上p的若干次冪的形式。
若n已經滿足f(n)=n 的性質,
有f(n⋅pk)=∑d|n(∑kt=0φ(d⋅pt)) 。
又因爲n與pk 互質,所以d與pk 也一定互質,φ 是積性函數,所以φ(d⋅pt)=φ(d)⋅φ(pt)
所以f(n⋅pk)=∑d|n(∑kt=0φ(d⋅pt))=∑d|nφ(d)⋅(∑kt=0φ(pt))=∑d|nφ(d)⋅f(pk)=f(pk)⋅∑d|nφ(d)=f(pk)⋅f(n)=n⋅pk 。
對於任意的一個數都可以進行質因數分解,分解成n=1⋅pa11⋅pa22⋅...⋅Pakk 的形式,因爲1是成立的,質數兩兩互質,所以任意正整數n都滿足f(n)=n 。
得證。
[2018.1.22] 填坑到此結束,後面的內容爲之前所寫。
利用這個性質可以有:
∑i=1ni=∑i=1n∑d|iφ(d)=∑d=1nφ(d)×⌊nd⌋
這裏給出歐拉函數的暴力求法:
x=pa11⋅pa22⋅...⋅pakk→φ(x)=x⋅(1−1p1)⋅(1−1p2)⋅...⋅(1−1pk)
證明:
φ(x)=φ(pa11⋅pa22⋅...⋅pakk)=φ(pa11)⋅φ(pa22)⋅...⋅φ(pakk)=(p1−1)p(a1)−11⋅(p2−1)p(a2)−12⋅...⋅(pk−1)p(ak)−1k=(1−1p1)pa11⋅(1−1p2)pa22⋅...⋅(1−1pk)pakk=x⋅(1−1p1)⋅(1−1p2)⋅...⋅(1−1pk)
得證。
狄利克雷卷積
一種生成函數的運算,定義如下:
(f×g)(n)=∑d|nf(d)⋅g(nd)
常見積性函數
單位函數:id(n)=n 。
元函數:e(n)=[n==1] 。
1函數:I(n)=1 。
約數個數:d(n)=∑d|n1 。
一些常見的性質
f 爲積性函數。
(f×e)(n)=∑d|nf(d)×e(nd)=∑d|nf(d)×[nd=1]=f(n)
即:
f×e=f
另外,狄利克雷卷積滿足交換律和結合律。
φ×I=id
證明:
φ×I=∑d|nφ(d)⋅I(nd)=∑d|nφ(d)=n
得證。
μ×I=e
證明:
(μ×I)(n)=∑d|nμ(d)⋅I(nd)=∑d|nμ(d)=[n=1]=e(n)
莫比烏斯反演
內容
若:
F(n)=∑d|nf(n)
則:
f(n)=∑d|nμ(d)⋅F(nd)
用狄利克雷卷積表述如下:
若:
F=f×1
則:
f=F×μ
從這個角度來講,證明就很簡單了:
F×μ=(f×1)×μ=f×(1×μ)=f×e=f
杜教篩原理
求積性函數前綴和:
S(n)=∑i=1nf(i)
當f的前綴和不好求的時候,考慮一個前綴和比較好求的g,求f×g 的前綴和。
∑i=1n(f×g)(i)=∑i=1n∑d|ig(d)⋅f(id)
枚舉d,存在一個d|i ,那麼f(id) 就要和g(d) 相乘,而i可以爲d,2d,3d,...,d⌊nd⌋ ,所以S(⌊nd⌋) 與g(d) 相乘就是g(d) 的貢獻。
=∑d=1ng(d)⋅∑i=1⌊nd⌋f(i)=∑d=1ng(d)⋅S(⌊nd⌋)
所以:
∑i=1n(f×g)(i)=∑d=1ng(d)⋅S(⌊nd⌋)=g(1)S(n)+∑i=2ng(i)⋅S(⌊ni⌋)
所以:
S(n)=∑ni=1(f×g)(i)−∑ni=2g(i)⋅S(⌊ni⌋)g(1)
這樣的話如果g 和(f×g) 的前綴和都很好求,那麼計算S(n) 只需要S(⌊n2⌋),S(⌊n3⌋),..,S(⌊nn⌋)=S(1) 。而又因爲⌊ni⌋ 只有O(n−−√) 種取值,所以記憶化搜索一下會有奇效。
關於⌊ni⌋ 的取值問題的證明。
當1≤i≤n−−√ 時,就算是結果兩兩各不相同,⌊ni⌋ 也只有n−−√ 種取值。
當n−−√<i≤n 時,1≤⌊ni⌋<n−−√ ,就算是取遍值域中的所有值,也只有n−−√ 種取值。
因此⌊ni⌋ 的取值種數不超過2n−−√ 種,即O(n−−√) 種。
得證。
用線性篩求出前n23 的前綴和之後再遞推,可以將O(n34) 優化到O(n23) 。