莫比乌斯函数学习笔记

本文部分公式来自这篇dalao的博客


什么是莫比乌斯函数

现在有一个数\(x\)
把这个\(x\)分解质因数:
\(\large x=\prod_{i=0}^{k}p_i^{t_i}\)
有:
\(\large \mu (n) =\begin{cases} &1\; if \; n=1 \\ &0 \; if \; \exists t_{i}> 1 \\ &(-1)^{k} \; if \; \forall t_{i}= 1 \end{cases}\)


怎么算莫比乌斯函数

莫比乌斯函数是个积性函数,因此我们可以通过欧拉筛在\(O(n)\)的时间内算出。
代码大概长这样w

int prime[N],p_tot,miu[N];
bool ntPrime[N];
void GetPrime(int n)
{
	miu[1]=1;
	ntPrime[1]=true;
	for(int i=2;i<=n;i++)
	{
		if(ntPrime[i]==false)
			prime[++p_tot]=i,miu[i]=-1;
		for(int j=1;j<=p_tot and i*prime[j]<=n;j++)
		{
			ntPrime[i*prime[j]]=true;
			if(i%prime[j]==0) 
			{
				miu[i*prime[j]]=0;
				break;
			}
			miu[i*prime[j]]=miu[i]*miu[prime[j]];
		}
	}
}

莫比乌斯函数有什么性质

1.\(\large \sum_{d\mid n}\mu(d) = \begin{cases} 1 & \text{ if } n=1 \\ 0 & \text{ if } n> 1 \end{cases}\)

证明:
对于第一种讨论\(n=1\):显然
对于第二种讨论\(n>1\),我们可以对它的因子进一步分类讨论,分为两类,第一类是这个因子中有某个质因数出现次数超过了两个,那么显然它的\(\mu=0\);对于另外那一部分,我们可以这样写:
\(\sum_{d|x}μ(d)=\sum_{i=0}^kC_k^i*(-1)^i\)[注1] \(=\) \((1+(-1))^k\)[注2] \(= 0\)
注1:我们这里相当于对\(x\)的质因数做排列组合来组合出\(x\)的因数
注2:这里运用到了二项式定理,省略了一步,中间省略的步骤为:\(\sum_{i=0}^kC_k^i*(-1)^i*(1)^{k-i}\)
证毕

2.\(\large \frac{\varphi(n)}{n}=\sum_{d|n}\frac{μ(d)}{d}\)

证明:不会证,会证后补(咕咕咕)

3.莫比乌斯函数是一个积性函数,有\(\large μ(a*b)=μ(a)*μ(b) \quad (gcd(a,b)=1)\)


扩展:莫比乌斯反演

\(\large f(n)=\sum_{d|n}g(d)\)

\(\large g(n)=\sum_{d|n}μ(d)*f(\frac{n}{d})\)
上面两个式子可以互相推导

证明:
我不会证,会了再补(咕咕咕)
可以参考这个dalao的博客

posted @ 2019-01-21 16:48  GoldenPotato  阅读(330)  评论(0编辑  收藏  举报