【持續更新】莫比烏斯反演簡明教程
阿新 • • 發佈:2019-02-01
前言
開始學省選演算法了……
感覺莫比烏斯反演好厲害的樣子,就先學習一下
一入反演深似海……
相關的東西太多了,以後會不定期更新
前置技能
莫比烏斯函式
莫比烏斯函式
設
顯然,
那麼我們就可以使用線性篩來得到
void prepare(){
mu[1]=1;
for (int i=2;i<=N;i++){
if (!vis[i]) p[++p[0 ]]=i,mu[i]=-1;
for (int j=1;j<=p[0]&&i*p[j]<=N;j++){
vis[i*p[j]]=1;
if (i%p[j]==0) {mu[i*p[j]]=0;break;}
else mu[i*p[j]]=-mu[i];
}
}
}
狄利克雷卷積
定義:對於數論函式
狄利克雷卷積的單位元為
任何數論函式 ∗e=f
定義函式
則有:
這說明
又有:
那麼可以得到
莫比烏斯反演
對於
則有莫比烏斯反演:
其實非常顯然,把命題換成狄利克雷卷積的形式就是:
已知
根據
應用
求gcd=k的個數
問題:求
這是莫比烏斯反演的入門題,非常經典
推導:
然後套用莫比烏斯反演: