莫比乌斯函数μ

函数的定义

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

情况函数值
n = 1 n=1 n=1 1 1 1
n = p 1 × p 2 × p 3 … … × p m n=p_1\times p_2\times p_3……\times p_m n=p1×p2×p3……×pm ( − 1 ) r (-1)^r (1)r
其他0

其中 p 1 p_1 p1 p 2 p_2 p2 p 3 p_3 p3 … … p m ……p_m ……pm指的是 n n n m m m个质因数。
注意:这里的 p 1 p_1 p1 p 2 p_2 p2 p 3 p_3 p3 … … p m ……p_m ……pm指数都是只有 1 1 1的,也就是说每个质因数在 n n n中只有一个,只要出现了第二个,那么情况就是其他

定理

对于莫比乌斯函数的和函数在整数 n n n处的值 F ( n ) = F(n)= F(n)= d ∣ n μ ( d ) _{d|n}\mu(d) dnμ(d),满足
∑ d ∣ n μ ( d ) = { 1 , n = 1 0 , 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 = 1 n=1 n=1时,显然有 F ( 1 ) = F(1)= F(1)= d ∣ n μ ( 1 ) = 1 _{d|n}\mu(1)=1 dnμ(1)=1
n > 1 n>1 n>1时,根据积性函数的定义,有 F ( n ) = F ( p 1 a 1 ) F ( p 2 a 2 ) … F ( p t a t ) 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 = p 1 a 1 p 2 a 2 … … p t a t n=p_1^{a_1}p_2^{a_2}……p_t^{a_t} n=p1a1p2a2……ptat 是质因数分解。如果能证明 F ( p k ) = 0 F(p^k)=0 F(pk)=0,即有 F ( n ) = 0 F(n)=0 F(n)=0.因为当 i ≥ 2 i \ge 2 i2时, μ ( p i ) = 0 \mu(p^i) = 0 μ(pi)=0,故有

F ( p k ) = F(p^k)= F(pk)= d ∣ p k μ ( d ) = μ ( 1 ) + μ ( p ) + μ ( p 2 ) + ⋯ + μ ( p k ) = 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 = 0 dpkμ(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、付费专栏及课程。

余额充值