莫比乌斯函数μ

函数的定义

莫比乌斯函数μ(n)\mu(n)μ(n)的定义为:

情况函数值
n=1n=1n=1111
n=p1×p2×p3……×pmn=p_1\times p_2\times p_3……\times p_mn=p1​×p2​×p3​……×pm​(−1)r(-1)^r(−1)r
其他0

其中p1p_1p1​,p2p_2p2​,p3p_3p3​,……pm……p_m……pm​指的是nnn的mmm个质因数。
注意:这里的p1p_1p1​,p2p_2p2​,p3p_3p3​,……pm……p_m……pm​指数都是只有111的,也就是说每个质因数在nnn中只有一个,只要出现了第二个,那么情况就是其他。

定理

对于莫比乌斯函数的和函数在整数nnn处的值F(n)=F(n)=F(n)=∑d∣nμ(d)_{d|n}\mu(d)d∣n​μ(d),满足
∑d∣nμ(d)={1,n=10,n>1\sum_{d|n}\mu(d) = \begin{cases}1,&n=1 \\0,&n>1\end{cases}∑d∣n​μ(d)={1,0,​n=1n>1​

证明

n=1n=1n=1时,显然有F(1)=F(1)=F(1)=∑d∣nμ(1)=1_{d|n}\mu(1)=1d∣n​μ(1)=1
n>1n>1n>1时,根据积性函数的定义,有F(n)=F(p1a1)F(p2a2)…F(ptat)F(n)=F(p_1^{a_1})F(p_2^{a_2}) \dots F(p_t^{a_t})F(n)=F(p1a1​​)F(p2a2​​)…F(ptat​​),其中,n=p1a1p2a2……ptatn=p_1^{a_1}p_2^{a_2}……p_t^{a_t}n=p1a1​​p2a2​​……ptat​​ 是质因数分解。如果能证明F(pk)=0F(p^k)=0F(pk)=0,即有F(n)=0F(n)=0F(n)=0.因为当i≥2i \ge 2i≥2时,μ(pi)=0\mu(p^i) = 0μ(pi)=0,故有

F(pk)=F(p^k)=F(pk)=∑d∣pkμ(d)=μ(1)+μ(p)+μ(p2)+⋯+μ(pk)=1+(−1)+0+0+……+0=0_{d|p^k}\mu(d) = \mu(1)+\mu(p)+\mu(p^2)+\dots+\mu(p^k)=1+(-1)+0+0+……+0 = 0d∣pk​μ(d)=μ(1)+μ(p)+μ(p2)+⋯+μ(pk)=1+(−1)+0+0+……+0=0

单个计算

int mobius_function(int n){
	if(n==1)return 1;
	int ans=0;
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0){
			n/=i;
			ans++;
		}
		while(n%i==0)return 0;
	}
	ans+=(n!=1);
	return pow(-1,ans);
}

筛法(线性筛)

void mobius(int n){
	vis[1]=1;
	mob[1]=1;
	for(int i=2;i<=n;i++){
		if(!vis[i]){//质数情况
			p[++cnt]=i;
			mob[i]=-1;
		}
		for(int j=1;j<=cnt&&p[j]*i<=n;j++){
			vis[p[j]*i]=1;
			mob[i*p[j]]=(i%p[j]?-mob[i]:0);
			if(i%p[j]==0)break;
		}
	}
}
posted on 2025-04-12 10:54  fish2012  阅读(50)  评论(0)    收藏  举报  来源