莫比烏斯反演學習筆記

前置芝士

極高的數學造詣與不怕勞累的精神html

佔坑,待重寫函數

正文

咱們能夠很是輕易地手動模擬出${f(n)}$與${g(d)}$的關係url

$${f(1)=g(1)}$$spa

$${f(2)=g(1)+g(2)}$$.net

$${...}$$code

$${f(6)=g(1)+g(2)+g(3)+g(6)}$$htm

與此同時,咱們也同樣可以從${f(n)}$逆推到${g(d)}$blog

$${g(1)=f(1)}$$get

$${g(2)=f(2)-f(1)}$$數學

$${...}$$

$${g(6)=f(6)-f(3)-f(2)+f(1)}$$

咱們會發現,這樣的一個式子,並無從${f(n)}$到${g(d)}$那麼和諧,而是有加有減,彷佛不太好處理。

$${g(n)=\sum_{d|n}^{}}f(d)*? $$

咱們會發現,每個${g(n)}$都是由上面這樣一個式子推出來的,只不過還多了一個係數

而後咱們就要引入一個新的東西

莫比烏斯函數

莫比烏斯函數是一個頗有趣的函數,其中有不少很優美,咱們也特別喜歡的性質

性質1:莫比烏斯函數是一個積性函數

這個東西應該沒什麼好說的,本身帶一帶,YY一下就能出來~~(實際上是我本身懶得證實啦QAQ)~~

這對咱們有什麼好處呢?

還記得歐拉函數${\varphi (n)}$嗎

因此一樣,咱們也能夠用線性篩來求解莫比烏斯函數


第一種求法:利用定義來求莫比烏斯函數

貼代碼吧,自行理解

void mobius()
{
    for(int i=1;i<=maxn;++i)
        miu[i]=1;
    for(int i=2;i<=maxn;++i)
    {
        if(!vis[i])
        {
            miu[i]=-1;
            for(int j=i+i;j<=maxn;j+=i)
            {
                vis[j]=1;
                if((j/i)%i==0) miu[j]=0;
                else miu[j]*=-1;
            }
        }
    }
}

第二種求法:利用積性函數的性質來求莫比烏斯函數

樓主很懶,什麼也沒有留下


性質2:對於任意正整數n,有 $$ {\sum_{d|n}} \mu(d) \left{\begin{matrix} 1,n=1\ 0,n>1 \end{matrix}\right. $$

這兩個性質真是太美妙了不是嗎


回到正題,上文咱們獲得

$${g(n)=\sum_{d|n}^{}}f(d)*? $$

繼續觀察,咱們能夠發現

${f(1)}$的符號並非惟一肯定的(觀察${g(1)andg(6)}$)

因而咱們能夠猜測,前面的係數與${\frac{n}{d}}$有關

因此咱們能夠猜測獲得

$${{g(n)=\sum_{d|n}^{}}f(d)*\mu (\frac{n}{d})} $$

而後再代換一下,獲得

$${{g(n)=\sum_{d|n}^{}}f(\frac{n}{d})*\mu (d)} $$

既然是猜測,天然須要證實

首先咱們能夠把${f(\frac{n}{d})}$換出來

就能夠獲得 $${\sum_{d|n}^{}}(\mu (d)*\sum_{i|\frac{n}{d}}^{}g(i))$$

而後咱們能夠發現其實就是要知足

$${d*i|n}$$

也能夠這麼理解,對於每個二元組:

$${(\mu (d),g(i))}$$

只須要保證每個這樣的二元組都可以被枚舉到就行了

因此這個式子就能夠變換爲

$${\sum_{i|n}^{}}(g(i)\sum_{id|n}^{}\mu(d))$$

若是實在不理解能夠帶一個具體值進去手動模擬一下,可能就茅塞頓開了

而後咱們能夠再代換一下

就變成了

$${\sum_{i|n}^{}}(g(i)*\sum_{d|\frac{n}{i}}^{}\mu(d))$$

看看後面的這一塊,有沒有想到咱們美妙的性質1啊?

當${i=n}$時,顯然${\sum_{d|\frac{n}{i}}^{}\mu(d)}=$${\sum_{d|1}^{}\mu(d)}=1$

當${i\neq n}$時,顯然${\frac{n}{i}>0}$,故此時這裏就能夠證得

$${{g(n)=\sum_{d|n}^{}}f(\frac{n}{d})*\mu (d)} $$

完結撒花!!!


Upd:

莫比烏斯反演的另外一種基本形式 $${{g(n)=\sum_{n|d}^{}}f(d)*\mu (\frac{d}{n})} $$

也能夠用上述相似的方法證實獲得


習題

P3455&BZOJ1101 【[POI2007]ZAP-Queries】

相關文章
相關標籤/搜索