莫比烏斯反演的前置知識
定義
如果一個數論函數f滿足:當n⊥m時,有
f(nm)=f(n)f(m)
則稱其爲積性函數
當不需要滿足互質條件(n⊥m)就能滿足f(nm)=f(n)f(m)時,稱其爲完全積性函數
若f是積性函數,且n=p1α1p2α2…psαs是n的標準分解,則有
f(n)=f(p1α1)f(p2α2)…f(psαs)
因此研究積性函數f可以轉化爲研究f(pα),即f在素數和素數的冪上的取值。
積性函數求值
設f是積性函數,爲求f(n),可以對n分解素因子,然後計算所有的f(pα)乘起來,因此積性函數求值都可以用線性篩來求
如果要對1到n之間的所有數求出f,注意到Euler篩法的過程中可以求出每個數的最小素因子和最小素因子的冪次,利用此就能在線性時間內計算出所需的f的值
歐拉篩如何求出最小素因子的冪次
void sieve() {
ip[0] = ip[1] = 1;
alpha[1] = 0;
for (int i = 2; i < XR; i++) {
if (!ip[i]) p[c++] = i, alpha[i] = 1, p1[i] = i;
for (int j = 0; j < c && i * p[j] < XR; j++) {
ip[i * p[j]] = 1;
p1[i * p[j]] = p[j];
if (i % p[j]) alpha[i * p[j]] = 1;
else {
alpha[i * p[j]] = alpha[i] + 1;
break;
}
}
}
}
常見積性函數
單位函數
單位函數ϵ(n)定義爲
ϵ(n)=[n=1]={1,0,n=1n=1
其中[condition]表示當condition爲真時取值爲1,否則爲0的函數。
除數函數
除數函數σk(n)用來表示n的因子的k次方之和:
σk(n)=d∣n∑dk
約數個數σ0(n)常記爲d(n),約數和σ1(n)常記爲σ(n)。
可以證明除數函數都是積性函數。
證明
每個素因子對函數的貢獻都是獨立的,它們之間的貢獻可以用乘積來衡量,舉一個例子:要算n的約數個數(即d(n)),就要枚舉n的約數d,考慮n的標準分解,也就是n=p1α1p2α2…psαs,可以想象出d的素因子也跑不出這些個素因子,只不過上面的指數不一樣,假設是β,那麼也就是d=p1β1p2β2…psβs,β1顯然是要在0到α1之間,否則d就不是n的約數了,同理每個β都是對應的每個0到α之間的,那麼β1有0到α1共α1+1種取值,每個β的選取是獨立的,所以他們的貢獻的乘積就是(1+α1)∗(1+α2)∗…∗(1+αs),這就是σ0的算法,其他的σk是一樣的,只不過(1+α)這一步要換成一個求和的形式。
素因子貢獻獨立是一個常見的思路。
Euler函數(歐拉函數)
Euler函數φ(n)表示不超過n且與n互質的正整數的個數,即
φ(n)=i=1∑n[gcd(i,n)=1]
比如說φ(6)=2,兩個數是1,5;φ(10)=4,四個數分別爲1,3,5,7。
由n的標準分解並結合容斥原理,我們可以得到歐拉函數的顯示錶達式:
φ(n)=n⋅i=1∏s(1−pi1)
其中pi是質數,n=p1α1p2α2…psαs是n的標準分解。
性質
對於任n,Euler函數具有如下性質:
n=d∣n∑φ(d)
要證明這個等式,我們將1到n中的所有整數按與n的最大公約數分類。
若gcd(n,i)=d,那麼gcd(dn,id)=1。而又di是不超過dn的整數,故這樣的i有φ(dn)個。
考慮所有d∣n,我們就考慮到了所有1到n之間的n個整數,因此有
n=d∣n∑φ(dn)=d∣n∑φ(d)
證明積性
以下是從大佬那裏淘來的證明
同樣的,t⊥nm⇔t⊥n,t⊥m⇔(tmodn)⊥n,(tmodm)⊥m,所以每個 [1,nm]之間的與nm互質的數t都可以對應到一個[1,n]的與n互質的數 tmodn和一個[1,m]的與m互質的數tmodm。
並且根據中國剩餘定理,這種對應是一一對應的(即已知 a⊥n,b⊥m後可以唯一確定一個[1,nm]之間的t使得tmodn=a,tmodm=b,且t⊥nm)。因此 φ(nm)=φ(n)φ(m) 。
然而我看不懂……還是從定義上來證明吧!
假設有兩個互質的正整數n,m,則
φ(n)=n∏(1−pi1)
φ(m)=m∏(1−pi′1)
φ(n)φ(m)=n∏(1−pi1)m∏(1−pi′1)=nm∏(1−pi1)∏(1−pi′1)
因爲n,m互質,所以pi和pi′各各都不相同,且都是nm的質因子
因此就可以推出φ(nm)=φ(n)φ(m)
至此,積性函數的性質得證。但是由上面的證明可知,n,m必須要互質纔可以滿足歐拉函數是積性函數,由此可見歐拉函數不是完全積性函數
恆等函數
idk=nk,id(n)=n
(就醬紫一筆帶過吧……)
性質
若f(x)和g(x)均爲積性函數,則以下函數也爲積性函數
h(x)h(x)h(x)h(x)=f(xp)=fp(x)=f(x)g(x)=d∣x∑f(d)g(dx)
部分性質的證明
來自鈴懸的數學講堂(抄這個東西也很累……)
兩個積性函數的狄利克雷卷積是積性函數
考慮到上面的性質,即“若n⊥m則每個nm的約數都可以分解成一個n的約數和一個m的約數的積”,並且有另一個性質:若n⊥m,a∣n,b∣m則a⊥b。
於是若n⊥m,我們就有
t(nm)=d∣nm∑f(d)g(dnm)=a∣n,b∣m∑f(ab)g(abnm)=a∣n,b∣m∑f(a)f(b)g(an)g(bm)=⎝⎛a∣n∑f(a)g(an)⎠⎞⎝⎛b∣m∑f(b)g(bm)⎠⎞=t(n)t(m)
積性函數的逆是積性函數
第二個重要的結論:積性函數的逆是積性函數。
對於一個積性函數 f ,如何證明其逆 g(n)=[n=1]−∑i∣n,i=1f(i)g(in) (注意,積性函數一定滿足 f(1)=1 ,因爲 f(1)=f(1)f(1) ,並且如果 f(1)=0 則 f(n)≡0 ,這種情況我們不考慮)也滿足積性呢?
對 nm 的大小進行歸納:
nm=1 時, g(1)=1 ,結論顯然成立;
假設 nm>1 ,當 n′m′<nm 的時候有 g(n′m′)=g(n′)g(m′) ,
g(nm)=−d∣nm,d=1∑f(d)g(dnm)=−a∣n,b∣m,ab=1∑f(ab)g(abnm)=−a∣n,b∣m,ab=1∑f(a)f(b)g(an)g(bm)=f(1)f(1)g(n)g(m)−a∣n,b∣m∑f(a)f(b)g(an)g(bm)=g(n)g(m)−⎝⎛a∣n∑f(a)g(an)⎠⎞⎝⎛b∣m∑f(b)g(bm)⎠⎞=g(n)g(m)−ϵ(n)ϵ(m)=g(n)g(m)
注意前面幾步把 g(abnm) 拆成 g(n/a)g(m/b) 的時候 abnm<nm ,可以運用歸納條件。
最後一步是因爲 nm>1 所以 n,m 之間至少一個不爲 1 ,則 ϵ(n)ϵ(m)=[n=1][m=1]=0 。
就醬紫吧