莫比乌斯反演新手入门及练习题

本文详细介绍了莫比乌斯函数、狄利克雷卷积的基础概念,包括性质证明和积性函数的特性。通过实例演示了如何使用莫比乌斯反演解决数论问题,如计数互质数对、特定条件下数对数量等,并提供了常见问题的解决方案。适合初学者理解莫比乌斯反演的证明过程和实际运用。
摘要由CSDN通过智能技术生成

参考了以下大佬写出来的详细博客。

莫比乌斯反演入门讲解_tomandjake_的博客-CSDN博客_莫比乌斯反演

狄利克雷卷积与莫比乌斯函数_RBS的专栏-CSDN博客

在自己学习莫比乌斯反演时,自己总是会纠结为什么这一步能跳到下一步,总是希望有一个证明过程,于是每个知识自己都去学习证明过程并写下来方便自己以后回来看。整篇文章可能会比较多证明过程,但是却十分适合初学者,每一步都有详细的过程,如何得到。已经尽自己的力量尽可能详细地写出来了。

前置知识

狄利克雷卷积定义:

​ 设有两个函数g,f。
f ∘ g ( n ) = ∑ d ∣ n n f ( d ) g ( n d ) d ∣ n 表 示 为 d 是 n 的 因 子 , 即 n % d = = 0 f \circ g(n) = \sum_{d|n}^n f(d)g(\frac{n}{d})\\ d|n表示为d是n的因子,即n\%d==0 fg(n)=dnnf(d)g(dn)dndnn%d==0


积性函数:

​ 对于完全互质的整数a,b。函数有性质 f ( a b ) = f ( a ) f ( b ) f(ab) = f(a)f(b) f(ab)=f(a)f(b)积性函数的卷积仍然为积性函数。

完全积性函数:

​ 对于任意整数a,b。函数有性质 f ( a b ) = f ( a ) f ( b ) f(ab) = f(a)f(b) f(ab)=f(a)f(b)


不变函数

​ 又叫全一函数,用 u u u表示。 其值域始终为1,即无论n为何值, u ( n ) ≡ 1 u(n) \equiv 1 u(n)1 。 { 1 , 1 , 1 , 1 , ⋯ {1,1,1,1,\cdots} 1,1,1,1,}


恒等函数

​ 用 I D ID ID表示。表达式为 I D ( n ) = n ID(n) = n ID(n)=n。 { 1 , 2 , 3 , 4 , 5 , ⋯ {1,2,3,4,5,\cdots} 1,2,3,4,5,}


单位函数

​ 用 ε \varepsilon ε表示。只有当n=1时, ε ( 1 ) = 1 \varepsilon(1) = 1 ε(1)=1, 否则, ε ( n ) = 0 \varepsilon(n) = 0 ε(n)=0。表达式也可写为 ε ( n ) = [ n = = 1 ] \varepsilon(n) = [n == 1] ε(n)=[n==1]。任何函数和单位函数的狄利克雷卷积仍然得到自身。{ 1 , 0 , 0 , 0 , 0 , ⋯ 1,0,0,0,0,\cdots 1,0,0,0,0,}


逆函数

​ 定义一个函数 f f f的逆函数 f − 1 f^{-1} f1,满足 f ∘ f − 1 = ε f \circ f^{-1} = \varepsilon ff1=ε。即两者的狄利克雷卷积等于单位函数。并且积性函数的逆也是积性函数。


莫比乌斯函数

​ 莫比乌斯函数用 μ ( n ) \mu(n) μ(n)表示。是一个积性函数。
μ ( n ) = { 1 , n = 1 ( − 1 ) k , n = ∏ i = 1 k p i , p 互 不 相 同 0 , o t h e r w i s e \mu(n) = \begin{cases} 1, & n = 1 \\ (-1)^k, & n = \prod\limits_{i=1}^kp_i,p互不相同 \\ 0, & otherwise \\ \end{cases} μ(n)=1,(1)k,0,n=1n=i=1kpi,potherwise

莫比乌斯函数完整定义的通俗表达(人话:

1)莫比乌斯函数 μ ( n ) \mu(n) μ(n)的定义域是N;

2) μ ( 1 ) \mu(1) μ(1)=1;

3)当n存在平方因子时, μ ( n ) \mu(n) μ(n)=0;

4)当n是素数或奇数个不同素数之积时, μ ( n ) \mu(n) μ(n)=-1;

5)当n是偶数个不同素数之积时, μ ( n ) \mu(n) μ(n)=1。

#include <bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
int prime[N], mobius[N], sum[N];
bool vis[N];

void isprime(int end)
{
	mobius[1] = 1;
	for(int i = 2; i <= end; i ++)
	{
		if(!vis[i])
		{
			prime[++prime[0]] = i;
			mobius[i] = -1;
		}
		for(int j = 1;j <= prime[0] && i * prime[j] <= end; j ++)
		{
			vis[i * prime[j]] = 1;
			if(i % prime[j] == 0)
				break;
			mobius[i*prime[j]] = - mobius[i]; 
		}
	}
	for(int i = 1; i <= end; i ++)
	{
		sum[i] = sum[i-1] + mobius[i];
	}
}

int main()
{
    isprime(N-10);
    return 0;
}
其具有积性的简易证明:

μ ( n ) = μ ( a ) ⋅ μ ( b ) \mu(n) = \mu(a) \cdot \mu(b) μ(n)=μ(a)μ(b),a,b互质。若a或者b有平方因子,易得两边都为0。若两者都没有平方因子,a,b提供的质因数个数可以累加至n上。


莫比乌斯函数性质

性质一:

∑ d ∣ n μ ( d ) = { 1 , n = 1 0 , n ≠ 1 \sum_{d|n} \mu(d) = \begin{cases} 1, & n = 1 \\ 0, & n \neq 1 \\ \end{cases} dnμ(d)={1,0,n=1n=1

证明:

①显然当n=1时成立

②当n ≠ \neq = 1,将n分解成 n = p 1 a 1 p 2 a 2 ⋯ p k a k n=p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k} n=p1a1p2a2pkak 。那么在n的所有因子中, μ \mu μ值不为0的只有所有质因子的次数为1的因子,其中质因数个数为r的因子有 C k r C_k^r Ckr个。显然:
∑ d ∣ n = C k 0 − C k 1 + C k 2 − ⋯ + ( − 1 ) k C k k = 0 \sum_{d|n} = C_k^0 - C_k^1 + C_k^2 - \cdots + (-1)^kC_k^k = 0 dn=Ck0Ck1+Ck2+(1)kCkk=0


性质二:
莫比乌斯函数的逆元为全一函数 u u u。即 μ ∘ u = ε \mu \circ u = \varepsilon μu=ε

证明:

①当n=1时, μ ( 1 ) = 1 , u ( 1 ) = 1 , 易 得 μ ∘ u = 1 \mu(1) = 1, u(1) = 1, 易得 \mu\circ u = 1 μ(1)=1,u(1)=1μu=1。即 = ε ( 1 ) = \varepsilon(1) =ε(1)

②当n ≠ \neq = 1时,则表达式为 ∑ d ∣ n μ ( d ) ⋅ u ( n d ) \sum\limits_{d|n}\mu(d) \cdot u(\frac{n}{d}) dnμ(d)u(dn)。将全一函数带入值,表达式化简为 ∑ d ∣ n μ ( d ) \sum\limits_{d|n} \mu(d) dnμ(d)。由莫比乌斯函数的性质易得此时值为0。综上,得证。


性质三:
恒等函数与莫比乌斯函数的卷积等于欧拉函数。

​ 欧拉函数记作 ψ ( n ) \psi(n) ψ(n),表示不超过n的与n互质的数的数量。即: I D ( n ) ∘ μ ( n ) = ∑ d ∣ n I D ( d ) ⋅ μ ( n d ) = ψ ( n ) ID(n) \circ \mu(n) = \sum\limits_{d|n}ID(d)\cdot\mu(\frac{n}{d}) = \psi(n) ID(n)μ(n)=dnID(d)μ(dn)=ψ(n)

证明:
根 据 欧 拉 函 数 的 定 义 可 写 出 ψ ( n ) = ∑ i [ g c d ( i , n ) = = 1 ] 又 因 为 只 有 n = 1 时 , μ ( n ) = 1 , 故 可 以 换 成 ∑ i [ g c d ( i , n ) = = 1 ] = ∑ i ∑ d ∣ g c d ( i , n ) μ ( d ) 式 子 左 边 考 虑 取 出 所 有 i , 求 和 所 有 d 。 右 边 考 虑 取 d , 再 考 虑 i 。 两 者 等 价 考 虑 每 一 个 可 能 的 d , 即 d 取 值 1 , 2 , ⋯   , 有 多 少 对 ( i , j ) 满 足 i 有 因 子 d , 同 时 n 也 有 因 子 d 呢 ? ∑ i ∑ d ∣ g c d ( i , n ) μ ( d ) = ∑ i ∑ d ∣ i , d ∣ n μ ( d ) = ∑ d ∣ n n d ⋅ μ ( d ) 根据欧拉函数的定义可写出\\ \psi(n) = \sum_i[gcd(i,n) == 1] \\ 又因为只有n=1时,\mu(n)=1,故可以换成\\ \sum_i[gcd(i,n) == 1] = \sum_i \sum_{d|gcd(i,n)}\mu(d) \\ 式子左边考虑取出所有i,求和所有d。右边考虑取d,再考虑i。两者等价\\ 考虑每一个可能的d,即d取值1,2,\cdots,有多少对(i,j)满足i有因子d,同时n也有因子d呢?\\ \sum_i \sum_{d|gcd(i,n)}\mu(d) = \sum_i \sum_{d|i,d|n}\mu(d) = \sum_{d|n} \frac{n}{d} \cdot \mu(d) ψ(n)=i[gcd(i,n)==1]n=1,μ(n)=1,i[gcd(i,n)==1]=idgcd(i,n)μ(d)i,dd,id,d1,2,,(i,j)id,ndidgcd(i,n)μ(d)=idi,dnμ(d)=dndnμ(d)


定理一:(以下假定 θ ( n ) \theta(n) θ(n)为积性函数, θ ( n ) = θ ( p 1 a 1 ) θ ( p 2 a 2 ) ⋯ θ ( p k a k ) \theta(n) = \theta(p_1^{a_1}) \theta(p_2^{a_2}) \cdots\theta(p_k^{a_k}) θ(n)=θ(p1a1)θ(p2a2)θ(pkak))

ψ ( n ) = ∑ d ∣ n θ ( d ) ψ ( n ) 为 积 性 函 数 = ( 1 + θ ( p 1 ) + θ ( p 1 2 ) + ⋯   ) ( 1 + θ ( p 2 ) + θ ( p 2 2 ) + ⋯   ) ⋯ ② \begin {aligned} \psi(n) & = \sum_{d|n}\theta(d) \qquad \psi(n)为积性函数 \\ & = (1+\theta(p_1) + \theta(p_1^2) + \cdots )(1 + \theta(p_2) + \theta(p_2^2) + \cdots)\cdots ② \end {aligned} ψ(n)=dnθ(d)ψ(n)=(1+θ(p1)+θ(p12)+)(1+θ(p2)+θ(p22)+)

证明:
设 g c d ( m , n ) = 1 , 则 m n 的 任 意 因 子 可 写 为 d = d 1 d 2 。 其 中 d 1 ∣ m , d 2 ∣ n 。 易 得 , d 1 , d 2 互 质 若 { d 1 ∣ m d 2 ∣ n ⇒ d 1 d 2 ∣ m n ⇒ ψ ( m n ) = ∑ d ∣ m n θ ( d ) = ∑ d 1 ∣ m ∑ d 2 ∣ n θ ( d 1 d 2 ) = ∑ d 1 ∣ m ∑ d 2 ∣ n θ ( d 1 ) θ ( d 2 ) = ∑ d 1 ∣ m θ ( d 1 ) ∑ d 2 ∣ n θ ( d 2 ) 设gcd(m,n) = 1,则mn的任意因子可写为d=d_1d_2。其中d_1|m,d_2|n。易得,d_1,d_2互质\\ 若\begin{cases} d_1|m\\ d_2|n \end{cases} \Rightarrow d_1d_2|mn \\ \Rightarrow \psi(mn) = \sum_{d|mn} \theta(d) = \sum_{d_1|m}\sum_{d_2|n}\theta(d_1d_2) = \sum_{d_1|m}\sum_{d_2|n}\theta(d_1)\theta(d_2) = \sum_{d_1|m}\theta(d_1)\sum_{d_2|n}\theta(d_2) gcd(m,n)=1mnd=d1d2d1m,d2n,d1,d2{d1md2nd1d2mnψ(mn)=dmnθ(d)=d1md2nθ(d1d2)=d1md2nθ(d1)θ(d2)=d1mθ(d1)d2nθ(d2)
由于 ∑ d 1 ∣ m θ ( d 1 ) ∑ d 2 ∣ n θ ( d 2 ) = ψ ( m ) ψ ( n ) \sum\limits_{d_1|m}\theta(d_1)\sum\limits_{d_2|n}\theta(d_2) = \psi(m)\psi(n) d1mθ(d1)d2nθ(d2)=ψ(m)ψ(n),故 ψ ( n ) \psi(n) ψ(n)为积性函数得证。

由于 θ ( n ) = θ ( p 1 a 1 ) θ ( p 2 a 2 ) ⋯ θ ( p k a k ) \theta(n) = \theta(p_1^{a_1})\theta(p_2^{a_2})\cdots\theta(p_k^{a_k}) θ(n)=θ(p1a1)θ(p2a2)θ(pkak),带入得到②式成立。


定理二:若 θ \theta θ为积性函数, μ θ \mu\theta μθ也为积性函数。

证明:定理一可知, ∑ d ∣ n u ( d ) θ ( d ) \sum\limits_{d|n}u(d)\theta(d) dnu(d)θ(d)也是积性函数。并且
∑ d ∣ n μ ( d ) θ ( d ) = ( 1 + μ ( p 1 ) θ ( p 1 ) + μ ( p 1 2 ) θ ( p 1 2 ) + ⋯   ) ( 1 + μ ( p 1 ) θ ( p 1 ) + μ ( p 1 2 ) θ ( p 1 2 ) + ⋯   ) ⋯ = = = = = 将 莫 比 乌 斯 函 数 的 值 带 入 得 到 ( 1 − θ ( p 1 ) ) ( 1 − θ ( p 2 ) ) ⋯ ( 1 − θ ( p k ) ) \begin{aligned} \sum\limits_{d|n}\mu(d)\theta(d)& = (1+\mu(p_1)\theta(p_1)+\mu(p_1^2)\theta(p_1^2)+\cdots) (1+\mu(p_1)\theta(p_1)+\mu(p_1^2)\theta(p_1^2)+\cdots)\cdots \\ &\overset{将莫比乌斯函数的值带入得到}{=====}(1-\theta(p_1))(1-\theta(p_2))\cdots(1-\theta(p_k)) \end{aligned} dnμ(d)θ(d)=(1+μ(p1)θ(p1)+μ(p12)θ(p12)+)(1+μ(p1)θ(p1)+μ(p12)θ(p12)+)=====(1θ(p1))(1θ(p2))(1θ(pk))

莫比乌斯反演

莫比乌斯反演:设函数
g ( n ) = ∑ d ∣ n f ( d ) ⇒ f ( n ) = ∑ d ∣ n μ ( d ) g ( n d ) ① g ( n ) = ∑ n ∣ d f ( d ) ⇒ f ( n ) = ∑ n ∣ d μ ( d n ) g ( d ) ② g(n) = \sum\limits_{d|n} f(d) \quad \Rightarrow \quad f(n) = \sum\limits_ {d|n}\mu(d) g(\frac{n}{d}) \qquad①\\ g(n) = \sum\limits_{n|d} f(d) \quad \Rightarrow \quad f(n) = \sum\limits_{n|d} \mu(\frac{d}{n}) g(d) \qquad②\\ g(n)=dnf(d)f(n)=dnμ(d)g(dn)g(n)=ndf(d)f(n)=ndμ(nd)g(d)
①式的证明:

​ 等价于证明 $g = f \circ u $ ,两边同时乘以莫比乌斯函数 μ \mu μ,得到 μ ∘ g = f ∘ u ∘ μ = f ∘ ε = f \mu \circ g = f \circ u \circ \mu = f \circ \varepsilon = f μg=fuμ=fε=f。得证。

​ 或者
∑ d ∣ n μ ( d ) g ( n d ) = = 将 已 知 条 件 带 入 ∑ d ∣ n μ ( d ) ∑ x ∣ n d f ( x ) = d 和 n 无 区 别 ∑ x ∣ n f ( x ) ∑ d ∣ n x μ ( d ) = ∑ x ∣ n f ( x ) [ n x = = 1 ] = f ( n ) \sum_{d|n}\mu(d)g(\frac{n}{d}) \overset{将已知条件带入}{==} \sum_{d|n}\mu(d) \sum_{x|{\frac{n}{d}}}f(x) \overset{d和n无区别}{=} \sum_{x|n}f(x) \sum_{d|{\frac{n}{x}}}\mu(d) = \sum_{x|n}f(x)[\frac{n}{x} == 1] = f(n) dnμ(d)g(dn)==dnμ(d)xdnf(x)=dnxnf(x)dxnμ(d)=xnf(x)[xn==1]=f(n)

②式的证明:

​ 令 k = d n k= \frac{d}{n} k=nd,则
∑ n ∣ d μ ( d n ) g ( d ) = ∑ k μ ( k ) g ( n k ) = ∑ k μ ( k ) ∑ ( n k ) ∣ t f ( t ) = ∑ t f ( t ) ∑ ( n k ) ∣ t μ ( k ) = ∑ t f ( t ) ε ( n t ) = f ( n ) \sum_{n|d} \mu(\frac{d}{n})g(d) = \sum_k \mu(k)g(nk) = \sum_k\mu(k) \sum_{(nk)|t}f(t) = \sum_tf(t)\sum_{(nk)|t}\mu(k) = \sum_tf(t)\varepsilon(\frac{n}{t}) = f(n) ndμ(nd)g(d)=kμ(k)g(nk)=kμ(k)(nk)tf(t)=tf(t)(nk)tμ(k)=tf(t)ε(tn)=f(n)


常见应用

问题一:在1~N的范围里,互质的数对一共有多少对?

解:这个问题问的就是
∑ i ∑ j [ g c d ( i , j ) = = 1 ] 仿 照 性 质 三 的 推 导 = ∑ i ∑ j ∑ d ∣ g c d ( i , j ) μ ( d ) = ∑ d N μ ( d ) ⋅ ⌊ N d ⌋ ⋅ ⌊ N d ⌋ \sum_i\sum_j [gcd(i,j) == 1]\\ 仿照性质三的推导\\ =\sum_i\sum_j\sum_{d|gcd(i,j)}\mu(d)\\ =\sum_d^N\mu(d) \cdot \lfloor\frac{N}{d}\rfloor \cdot \lfloor \frac{N}{d}\rfloor ij[gcd(i,j)==1]仿=ijdgcd(i,j)μ(d)=dNμ(d)dNdN
或者(有关这类的问题都可以这么设函数。)
设 f ( n ) = ∑ i N ∑ j N [ g c d ( i , j ) = = n ] g ( n ) = ∑ i N ∑ j N [ n ∣ g c d ( i , j ) ] 那 么 g ( n ) = ∑ n ∣ d N f ( d ) 且 g ( n ) = ⌊ N n ⌋ ⌊ N n ⌋ 根 据 反 演 , 得 到 f ( n ) = ∑ n ∣ d , d ⩽ N μ ( d n ) f ( d ) = ∑ n ∣ d , d ⩽ N μ ( d n ) ⌊ N d ⌋ ⌊ N d ⌋ 题 目 要 求 是 f ( 1 ) = ∑ d N μ ( d ) ⋅ ⌊ N d ⌋ ⋅ ⌊ N d ⌋ 设f(n) = \sum_i^N\sum_j^N[gcd(i,j) == n]\\ g(n) = \sum_i^N\sum_j^N[n|gcd(i,j)]\\ 那么 \qquad g(n) = \sum_{n|d}^N f(d)且g(n) = \lfloor\frac{N}{n}\rfloor \lfloor\frac{N}{n}\rfloor \\ 根据反演,得到 \qquad f(n) = \sum_{n|d,d \leqslant N}\mu(\frac{d}{n})f(d) = \sum_{n|d,d \leqslant N}\mu(\frac{d}{n})\lfloor\frac{N}{d}\rfloor \lfloor\frac{N}{d}\rfloor \\ 题目要求是f(1) = \sum_d^N\mu(d) \cdot \lfloor\frac{N}{d}\rfloor \cdot \lfloor \frac{N}{d}\rfloor f(n)=iNjN[gcd(i,j)==n]g(n)=iNjN[ngcd(i,j)]g(n)=ndNf(d)g(n)=nNnN,f(n)=nd,dNμ(nd)f(d)=nd,dNμ(nd)dNdNf(1)=dNμ(d)dNdN
问题二: i i i在1~N范围内, j j j在1~M范围内,问互质的数对的数量有多少对?
问 题 问 的 是 ∑ i N ∑ j M [ g c d ( i , j ) = = 1 ] = ∑ i N ∑ j M ∑ d ∣ g c d ( i , j ) μ ( d ) = ∑ d d ⩽ m i n ( M , N ) μ ( d ) ⌊ N d ⌋ ⋅ ⌊ M d ⌋ 问题问的是\sum_i^N \sum_j^M[gcd(i,j) == 1] = \sum_i^N \sum_j^M \sum_{d|gcd(i,j)}\mu(d) \\ =\sum_d^{d\leqslant min(M,N)} \mu(d) \lfloor\frac{N}{d}\rfloor \cdot \lfloor \frac{M}{d}\rfloor iNjM[gcd(i,j)==1]=iNjMdgcd(i,j)μ(d)=ddmin(M,N)μ(d)dNdM
问题三:在1~N的范围内,gcd为质数的数对一共有多少对?即问:
∑ p k ∑ i N ∑ j N [ g c d ( i , j ) = = p k ] = ∑ p k ∑ i N ∑ j N [ g c d ( i p k , i p k ) = = 1 ] = ∑ p k ∑ i N ∑ j N ∑ d ∣ g c d ( i p k , j p k ) μ ( d ) = ∑ p k ∑ d μ ( d ) ⌊ ⌊ N p k ⌋ d ⌋ ⌊ ⌊ N p k ⌋ d ⌋ \begin{aligned} \sum_{p_k} \sum_i^N \sum_j^N[gcd(i,j) == p_k] &= \sum_{p_k} \sum_i^N \sum_j^N[gcd(\frac{i}{p_k},\frac{i}{p_k}) == 1]\\ &= \sum_{p_k}\sum_i^N \sum_j^N \sum_{d|gcd(\frac{i}{p_k},\frac{ j}{p_k})}\mu(d) \\ &= \sum_{p_k} \sum_d\mu(d) \lfloor\frac{\lfloor\frac{N}{p_k}\rfloor }{d}\rfloor \lfloor\frac{\lfloor\frac{N}{p_k}\rfloor }{d}\rfloor \end{aligned} pkiNjN[gcd(i,j)==pk]=pkiNjN[gcd(pki,pki)==1]=pkiNjNdgcd(pki,pkj)μ(d)=pkdμ(d)dpkNdpkN

习题

能量采集

YY的GCD

余数求和

公约数的和

奇妙数论题

数字表格

Sky Code - POJ

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值