莫比乌斯反演
前言
记得上次学这个东西已经是一年前了,题到没有做过几道……
一些有趣的东西
莫比乌斯这个人还是很nb的,相信大家都听说过莫比乌斯带,就是他发现的,跟所有数学大佬一样的,他还喜欢天文学和物理
废话不扯多了
前置知识
整除分块
一个在数论计算中异常常见的东西,一般和反演一起出现不是因为反演常见它就常见吗,一般可以在如下形式的式子中使用:
这里直接说\(O(\sqrt{n})\)的做法,也就是整除分块,具体做法如下:
- 由一些神奇的规律可以发现,大多数\(\lfloor \frac{n}{i}\rfloor\)的值是一样的,且呈块状分布
- 可以发现对于每一个对于每一个值相同的块,最后一个数都是\(n/(n/i)\)
- 直接乱搞
for(int i=1,k=0;i<=n;i=k+1){
k=n/(n/i);
ans+=(k-i+1)*(n/i);
}
由于主角不是这货,所以证明什么的就不需要啦,有兴趣可以自己打打表看看,或者上网查查证明
正文
莫比乌斯函数
定义
其定义如下:
\[\mu(x)=\left\{\begin{aligned} 1 & &n==1 \\ (-1)^r && n=p_1p_2……p^r,其中p_i为不同质数\\ 0 && others \end{aligned} \right. \]计算
对于算法竞赛来说,我们有两个方法来算莫比乌斯函数:
方法1:
根据定义直接算
时间复杂度:\(O(\sqrt{(n)})\)
看着很搞笑高效是吧,这东西一次只能算一个数……
方法二:
计算欧拉筛的时候算
void get_mu(int n){
mu[1]=1;//定义n=1
for(int i=2;i<=n;i++)
{
if(!vis[i]){prim[++cnt]=i;mu[i]=-1;}
for(int j=1;j<=cnt&&prim[j]*i<=n;j++)
{
vis[prim[j]*i]=1;
if(i%prim[j]==0)break;
else mu[i*prim[j]]=-mu[i];
}
}
}
接下来给出莫比乌斯函数的一堆定理和部分证明:
定理
1.莫比乌斯函数\(\mu(n)\)是积性函数
2.莫比乌斯函数的和函数在整数\(n\)处的值\(F(n)=\sum_{d|n}\mu(d)\),满足如下
\[\sum_{d|n}\mu(d)=\left\{\begin{aligned} 1 & &n==1 \\ 0 && n>1\\ \end{aligned} \right. \]证明
对于定理1:这个我想大家自己脑补,因为我觉得显然,但是要写很多东西……,或者可以查一下积性函数,这个东西怎么出名,绝对有人写证明
抱歉!!!
对于定理2:这个还是有一点说头的
先考虑\(n=1\)的情况,\(F(1)=\sum_{d|1}\mu(d)=\mu(1)=1\)
对于\(n>1\),因为上一个定理,\(\mu\)是一个积性函数,那么它的和函数必定是一个积性函数,我们现在假设\(p\)为质数,\(k\)为正整数,那么可以得到如下等式
\[\begin{aligned} F(p^k)&=\sum_{d|p^k}\mu(d)=\mu(1)+\mu(p)+\mu(p^2)+...+\mu(p^k)\\ &=1+(-1)+0+...+0=0 \end{aligned} \]当一个正整数\(n=p^{a_1}_1p^{a_2}_2...p^{a_k}_k\)时,其和函数\(F(n)=F(p_1^{a_1})F(p_2^{a_2})F(p_3^{a_3})...F(p_k^{a_k})=0\)
证毕
莫比乌斯反演
设\(f\)为算术函数,\(f\)的和函数\(F\)的值为\(F(n)=\sum_{d|n}f(d)\),其值由\(f\)的值决定。也就是说\(F\)的形式由\(f\),决定,即\(f\)可以视作自变量,\(F\)可以视作因变量
那我们思考,能不能让\(f\)作为因变量呢,简单来说就是用\(F\)表示出\(f\),由此引出莫比乌斯反演
依旧设\(f\)为算术函数,\(F\)为其和函数\(F(n)=\sum_{d|n}f(d)\),我们按照定义式展开\(F(n),n=1,2,…,8\)
\[\begin{align} F(1)&=f(1)\\ F(2)&=f(1)+f(2)\\ F(3)&=f(1)+f(3)\\ F(4)&=f(1)+f(2)+f(4)\\ F(5)&=f(1)+f(5)\\ F(6)&=f(1)+f(2)+f(3)+f(6)\\ F(7)&=f(1)+f(7)\\ F(8)&=f(1)+f(2)+f(4)+f(8)\\ \end{align} \]从这上面的方程可以算出\(f(n),n=1,2……8\)的值
\[\begin{align} f(1)&=F(1)\\ f(2)&=F(2)-F(1)\\ f(3)&=F(3)-F(1)\\ f(4)&=F(4)-F(1)\\ f(5)&=F(5)-F(1)\\ f(6)&=F(6)-F(3)-F(2)+F(1)\\ f(7)&=F(7)-F(1)\\ f(8)&=F(8)-F(4)\\ \end{align} \]那么我们可以注意到\(f(n)\)等于\(\pm F(n/d)\),其中\(d|n\),那么我们可以得到一个等式
\[f(n)=\sum_{d|n}\mu(d)F(n/d) \]这个就是网上常见的莫比乌斯反演啦
我们先来证明一下证明一下这个东西:
先从公式的右边的和式开始,通过\(f\)的和函数的定义,将\(F(n/d)\)用表达式\(\sum_{e|\frac{n}{d}}f(e)\)表示
\[\begin{aligned} \sum_{d|n}\mu(d)F(n/d)&=\sum_{d|n}(\mu(d)\sum_{e|\frac{n}{d}}f(e))\\ &=\sum_{d|n}(\sum_{e|\frac{n}{d}}f(e)\mu(d)) \end{aligned} \]注意到二元组\((d,e)\),满足\(d|n,e|\frac{n}{d}\).同样的\(e|n,d|\frac{n}{e}\),那么继续变
\[\begin{aligned} \sum_{d|n}(\sum_{e|\frac{n}{d}}f(e)\mu(d))=\sum_{e|n}(\sum_{d|\frac{n}{e}}f(e)\mu(d))=\sum_{e|n}(f(e)\sum_{d|\frac{n}{e}}\mu(d)) \end{aligned} \]然后我们由上面莫比乌斯函数的定理可以得到\(\sum_{d|\frac{n}{e}}\mu(d)=0\),除非\(\frac{n}{e}=1\),当\(n=e\)时,和等于1,所以有:
\[\sum_{e|n}(f(e)\sum_{d|\frac{n}{e}}\mu(d))=f(n)\times 1=f(n) \]证毕
定理
设\(f\)是积性函数,和函数\(F(n)=\sum_{d|n}\mu(d)\),如果\(F\)是积性函数的话,\(f\)也是积性函数
证明请读者像上面\(\mu\)是积性函数一样yy一下吧,等一下还要写杜教筛,我要写不动了
用途
杜教筛、容斥、数论推式子
后话
感觉和一年前学的时候完全不一样了,以前只看结论,现在还会研究一下证明,越来越喜欢数论了
以上内容的证明和推导全部基于《初等数论及其应用》作者是Kenneth H.Rosen
感谢亲爱的czc教练提供资料
标签:frac,函数,推导,sum,mu,反演,莫比 From: https://www.cnblogs.com/Zhangrx-/p/17388315.html