莫比乌斯反演证实

前言?html

终于放假了~~感受再不趁机颓会儿我博客就废了……ide

赶忙写点东西刷刷存在感(骗点积分函数

莫比乌斯函数学习

 定义一种函数$\mu(d)$,知足:spa

1.若$d=1$,则$\mu(d)=1$。code

2.若$d=p_1p_2p_3\cdots p_k$且$p_i$为互异素数时,$\mu(d)=(-1)^k$。htm

3.其余状况$\mu(d)=0$。blog

那么咱们将函数$\mu(d)$称做莫比乌斯函数。rem

看上去很NB?get

通俗一点,就是对于1来讲$\mu(1)=1$,其余数的话若数d包含相同质因子则$\mu(d)=0$,若质因子各不相同,那么若x有奇数个质因子$\mu(d)=-1$,不然$\mu(d)=1$。

 莫比乌斯函数有许多神奇的性质(就知道两个):

性质一:$\sum\limits_{d|n}\mu(d) = [n==1]$

证实:

[n==1]意思就是当且仅当n=1时返回1,不然返回0。

$n=1$时显然成立。

$n \neq 1$时,首先对于$\mu(d)=0$的状况咱们能够直接忽略,只需考虑$\mu(d)\neq 0$,即$d=p_1^{c_1}p_2^{c_2}\cdots p_k^{c_k}$且对于$\forall i\in [1,k]\ c_i=1$的状况。

 设$n=p_1^{c_1}p_2^{c_2}\cdots p_i^{c_i}$,则d的质因子个数是j的状况一共有$C_i^j$种。

那么根据莫比乌斯函数的定义咱们能够获得\begin{array}{lcl}\sum\limits_{d|n}\mu(d) & = & C_i^0-C_i^1+C_i^2-\cdots +(-1)^iC_i^i \\& = & \sum\limits_{j=0}^i(-1)^jC_i^j \end{array}

就是说咱们只须要证实$\sum\limits_{j=0}^i(-1)^jC_i^j = 0$就能够了。

这个东西就是个裸的二项式定理,不会二项式定理的话能够参考个人另外一篇博客又开始骗阅读了)。

因而咱们就愉快的证实出了性质一。

性质二:$\sum\limits_{d|n}\frac{\mu(d)}{d}=\frac{\phi(n)}{n}$

其中$\phi(n)$为欧拉函数(来看莫比乌斯反演的应该不会不知道吧……)。

这个性质会在下面讲狄利克雷卷积时证实。

求法:

求单个数的莫比乌斯函数直接分解质因数便可。

若求1~n项的莫比乌斯函数值,咱们能够用Eratosthenes筛法计算。

#include<cstdio>
using namespace std;
int const N=1e5+5;
int miu[N];
bool v[N];
inline void get_miu(int n){
    for(register int i=1;i<=n;++i)
        miu[i]=1;
    for(register int i=2;i<=n;++i){
        if(v[i])continue;
        miu[i]=-1;
        for(register int j=i<<1;j<=n;j+=i){
            v[j]=1;
            if((j/i)%i)miu[j]=-miu[j];
            else miu[j]=0;
        }
    }
    return ;
}
int main(){
    int n;
    scanf("%d",&n);
    get_miu(n);
    return 0;
}
View Code

也能够线性筛,只要在线性筛素数的基础上略作修改便可。

#include<cstdio>
using namespace std;
int const N=1e5+5;
int miu[N],prime[N],tot;
bool v[N];
inline void get_miu(int n){
    miu[1]=1;
    for(register int i=2;i<=n;++i){
        if(!v[i])prime[++tot]=i,miu[i]=-1;
        int zz=-miu[i];
        for(register int j=1;j<=tot;++j){
            int now=prime[j]*i;
            if(now>n)break;
            v[now]=1;
            if(i%prime[j])miu[now]=zz;
            else break;
        }
    }
    return ;
}
int main(){
    int n;
    scanf("%d",&n);
    get_miu(n);
    return 0;
}
View Code

 狄利克雷卷积

在学习狄利克雷卷积以前咱们先了解一个东西叫作数论函数

咱们没必要熟悉整个数论函数的体系,咱们只须要了解一些常见数论函数便可。

而若是一个数论函数f对于任意两个互质的正整数a,b知足$f(a\times b)=f(a)\times f(b)$,咱们把函数f称做积性函数。

注意积性函数与积性函数的乘积仍为积性函数。

咱们见到的大部分数论函数都是积性函数,下面举一些例子:

1.$\phi(n)/\varphi(n)$ 欧拉函数 表示1~n中与n互质的数的个数。$\phi(n)=\sum\limits_{i=1}^n[gcd(n,i)==1]$

2.$\mu(n)$ 莫比乌斯函数 上面应该已经说的很清楚了,再也不赘述。

3.$d(n)$ 约数个数 表示n的正因子个数 $d(n)=\sum\limits_{d|n}1$

4.$\sigma(n)$ 约数和函数 表示n的全部正因子之和 $\sigma(n)=\sum\limits_{d|n}d$

5.$\epsilon(n)/e(n)$ 元函数 对于狄利克雷卷积的乘法单位 $\epsilon(n)=[n==1]$

6.$1(n)$ 恒等函数 恒为1 $1(n)=1$

7.$Id(n)$ 单位函数 就是自己的大小 $Id(n)=n$

若函数f对于任意一个正整数对(a,b)都知足$f(a\times b)=f(a)\times f(b)$,那么咱们把函数f称做彻底积性函数。

上面积性函数例子的5,6,7都是彻底积性函数。

全部狄利克雷特征(一种数论函数,想了解的问度娘去)都是彻底积性函数。

下面,咱们正式开始讲解狄利克雷卷积。

 定义一种运算$*$,对于函数f,g知足$(f*g)(n)=\sum\limits_{d|n}f(d)g(\frac{n}{d})$,咱们把这种运算$*$称做狄利克雷卷积。

狄利克雷卷积知足交换律,结合律以及分配律。

上面解释元函数$\epsilon(n)$时说到元函数是对于狄利克雷卷积的乘法单位,元函数能够在狄利克雷卷积中充当单位元,即$f*\epsilon=f$。

对于一个函数f,若是$f(1)\neq 0$,则都存在函数g知足$f*g=\epsilon$,咱们把g称做f的逆元。

从某巨神的博客偷的逆元式子:

$g(n)=\frac{1}{f(1)}\left([n==1]-\sum\limits_{d|n,d\neq 1}f(d)g(\frac{n}{d})\right)$

$\sum\limits_{d|n}f(d)g(\frac{n}{1})=f(1)g(n)+\sum\limits_{d|n,d\neq 1}f(d)g(\frac{n}{d})=[n==1]$

下面列举几种卷积关系:

1.$d=1*1$

2.$\sigma=d*1$

3.$Id=\phi*1$

4.$\epsilon=\mu*1$

5.$\phi=\mu*Id$

6.$1=\mu*d$

证实:

1,2显然(直接把函数表达式代入就好了)。

3:

\begin{array}{lcl}Id(n) & = & \sum\limits_{i=1}^n\sum\limits_{j=1}^n[gcd(i,n)==j] \\& = & \sum\limits_{j|n}\sum\limits_{i=1}^{\lfloor\frac{n}{j}\rfloor}[gcd(i,\frac{n}{j})==1] \\& = & \sum\limits_{j|n}\phi(\frac{n}{j}) \end{array}

即 $Id=\phi*1$

其实就是欧拉函数的一个性质:$\sum\limits_{d|n}\phi(d)=n$

4就是莫比乌斯函数的性质一,上面已经证实过,再也不赘述。

5:

我好像说莫比乌斯函数的性质二要在讲狄利克雷卷积时证实?

这个5其实就是$\mu(n)$的性质二。

\begin{array}{cc}Id & = & \phi*1 \\Id*\mu & = & \phi*1*\mu \\Id*\mu & = & \phi*\epsilon \\Id*\mu & = & \phi \\ \sum\limits_{d|n}\mu(d)\frac{n}{d}  & = & \phi(n) \\ \sum\limits_{d|n}\frac{\mu(d)}{d} & = & \frac{\phi(n)}{n} \end{array}

证毕。

6.

\begin{array}{cc}d & = & 1*1\\d*\epsilon & = & 1*1\\ d*\mu*1 & = & 1*1\\ d*\mu & = & 1 \end{array}

证毕。

莫比乌斯反演

$f(n)=\sum\limits_{d|n}g(d) \Leftrightarrow g(n)=\sum\limits_{d|n}\mu(d)f(\frac{n}{d})$

另外一种形式:$f(n)=\sum\limits_{n|d}g(d) \Leftrightarrow g(n)=\sum\limits_{n|d}\mu(\frac{d}{n})f(d)$

咱们先证实第一种形式。

已知$f(n)=\sum\limits_{d|n}g(d)$

则\begin{array}{lcl}\sum\limits_{d|n}\mu(d)f(\frac{n}{d}) & = & \sum\limits_{d|n}\mu(d)\sum\limits_{i|\frac{n}{d}}g(i) \\& = & \sum\limits_{d|n}\sum\limits_{i|\frac{n}{d}}\mu(d)g(i) \\& = & \sum\limits_{i|n}\sum\limits_{d|\frac{n}{i}}\mu(d)g(i) \\& = & \sum\limits_{i|n}g(i)\sum\limits_{d|\frac{n}{i}}\mu(d) \\& = & g(n)\end{array}

得证。

然而事实上能够用狄利克雷卷积证实。

 $f(n)=\sum\limits_{d|n}g(d)$能够表示为$f=g*1$

则\begin{array}{lcl}f*\mu & = & g*1*\mu \\& = & g*(1*\mu) \\& = & g*\epsilon \\& = & g \end{array}

带入就能够获得莫比乌斯反演的两种形式了……

相关文章
相关标签/搜索