关于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反演的主要内容,如果未能解决你的问题,请参考以下文章