莫比乌斯反演学习笔记

前置芝士

极高的数学造诣与不怕劳累的精神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】

相关文章
相关标签/搜索