关于Mobius反演

Posted wasa855

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Mobius反演相关的知识,希望对你有一定的参考价值。

欧拉函数 (varphi)

(varphi(n)=)表示不超过 (n) 且与 (n) 互质的正整数的个数
[varphi(n)=ncdot prod_{i=1}^{s}(1-frac{1}{p_i})]
其中 (n = {p_1}^{alpha1} cdot {p_2}^{alpha2} cdots {p_s}^{alpha s} cdot)(n) 的标准分解。
由此易见 ( ext{Euler}) 函数是积性函数。

线性求 ( ext{Euler}) 函数:

#define int long long
int phi[3000005];
int n=3000000;
bool mark[3000005];
int prime[1000005];
int tot;
void getphi()
{
    phi[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(mark[i]==false)
        {
            prime[++tot]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=tot;j++)
        {
            if(i*prime[j]>n)
            {
                break;
            }
            mark[i*prime[j]]=true;
            if(i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
            phi[i*prime[j]]=phi[i]*phi[prime[j]];
        }
    }
    for(int i=1;i<=n;i++)
    {
        phi[i]+=phi[i-1];
    }
}

( ext{Mobius})函数 (mu(n))

[ mu(n)= egin{cases} 1&n=1\ 0&n ext{ 含有平方因子}\ (-1)^k&k ext{ 为 }n ext{ 的本质不同质因子个数} end{cases} ]
证明:
[ varepsilon(n)= egin{cases} 1&n=1\ 0&n eq 1 end{cases} ]

其中 (displaystylevarepsilon(n)=sum_{dmid n}mu(d))(varepsilon=mu*1)

(displaystyle n=prod_{i=1}^k{p_i}^{c_i},n‘=prod_{i=1}^k p_i)

那么 (displaystylesum_{dmid n}mu(d)=sum_{dmid n‘}mu(d)=sum_{i=0}^k C_k^icdot(-1)^k)

根据二项式定理,易知该式子的值在 (k=0)(n=1) 时值为 (1) 否则为 (0) ,这也同时证明了 (displaystylesum_{dmid n}mu(d)=[n=1])

#define int long long
int mu[3000005];
int n=3000000;
bool mark[3000005];
int prime[1000005];
int tot;
void getmu()
{
    mu[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(mark[i]==false)
        {
            prime[++tot]=i;
            mu[i]=-1;
        }
        for(int j=1;j<=tot;j++)
        {
            if(i*prime[j]>n)
            {
                break;
            }
            mark[i*prime[j]]=true;
            if(i%prime[j]==0)
            {
                mu[i*prime[j]]=0;
                break;
            }
            mu[i*prime[j]]=-mu[i];
        }
    }
}

( ext{Dirichlet})卷积

( ext{ID}: ext{ID(i)=i})
( ext{1}: ext{1(i)=1})
定义两个数论函数的( ext{Dirichlet})卷积为:
[(f*g)(n)=sum_{d|n}({f(d) imes g(frac{n}{d})}) ]
性质:( ext{Dirichlet})卷积满足交换律和结合律。
单位元:(varepsilon)(varepsilon(n)=[n==1]),任何函数卷(varepsilon)都为其本身.
(1*mu=varepsilon)
(mu * ext{ID} = varphi)
(1* ext{ID}=sigma)

莫比乌斯反演

公式:设 (f(n),g(n)) 为两个数论函数。
如果有
[ f(n)=sum_{dmid n}g(d) ]
那么有
[ g(n)=sum_{dmid n}mu(frac{n}{d})f(d) ]
证明:
原命题等价于:已知 (f=g*1) ,证明 (g=f*mu)
显然: (f*mu=g*1*mu= g*varepsilon=g) (其中 (1*mu=varepsilon)

同时,还有另一种( ext{Mobius})反演:
如果有
[ f(n)=sum_{nmid d}g(d) ]
那么有
[ g(n)=sum_{nmid d}mu(frac{d}{n})f(d) ]

柿子简化

[sum_{i=1}^{n}{[gcd(i,n)==d]} ]
[ = sum_{i=1}^{frac{n}{d}}{[gcd(i,frac{n}{d})==1]}]
[=varphi(frac{n}{d}) ]



























以上是关于关于Mobius反演的主要内容,如果未能解决你的问题,请参考以下文章

Mobius反演定理

Mobius反演的套路

bzoj 2301: [HAOI2011]Problem b mobius反演 RE

线性筛-mobius,强大O(n)

莫比乌斯反演

掌握莫比乌斯反演~彻底入门