莫比乌斯函数μ

函数的定义

莫比乌斯函数μ(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_1p1p2p_2p2p3p_3p3……pm……p_m……pm指的是nnnmmm个质因数。
注意:这里的p1p_1p1p2p_2p2p3p_3p3……pm……p_m……pm指数都是只有111的,也就是说每个质因数在nnn中只有一个,只要出现了第二个,那么情况就是其他

定理

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

证明

n=1n=1n=1时,显然有F(1)=F(1)=F(1)=d∣nμ(1)=1_{d|n}\mu(1)=1dnμ(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=p1a1p2a2……ptat 是质因数分解。如果能证明F(pk)=0F(p^k)=0F(pk)=0,即有F(n)=0F(n)=0F(n)=0.因为当i≥2i \ge 2i2时,μ(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 = 0dpkμ(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;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值