莫比乌斯反演基础

2017 CDQZ 联训 中向 HSZX 的大佬请教了一些关于莫反的知识,特此感谢!

本文仅介绍一些关于莫比乌斯反演的基础知识。

声明

本文中,若无特殊声明 pa11pa22...Pakk p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ P k a k 表示一个数的质因数分解, i,prime(pi)aiN+ ∀ i , p r i m e ( p i ) ∧ a i ∈ N +

莫比乌斯函数

定义

莫比乌斯函数是在数论中一个很重要的积性函数,定义如下。

若正整数x可质因数分解为:

x=pa11pa22...Pakk x = p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ P k a k

μ(x)=0:ai21:k0mod21:k1mod2 μ ( x ) = { 0 : ∃ a i ≥ 2 1 : k ≡ 0 mod 2 − 1 : k ≡ 1 mod 2

即当 x1 x ≠ 1 ,且不存在平方因子时:

μ(x)=(1)k μ ( x ) = ( − 1 ) k

当x存在平方因子时:

μ(x)=0 μ ( x ) = 0

特殊地:

μ(1)=1 μ ( 1 ) = 1

一些性质

此性质可用来判断一个数是否等于一。

d|nμ(d)=[n=1] ∑ d | n μ ( d ) = [ n = 1 ]

证明:

n=1 n = 1 时显然成立。

n1 n ≠ 1 时,不妨令 n=pa11pa22...Pakk n = p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ P k a k ,那么n的因子 d=pb11pb22...Pbkk,0biai d = p 1 b 1 ⋅ p 2 b 2 ⋅ . . . ⋅ P k b k , 0 ≤ b i ≤ a i

bi2,μ(d)=0 ∃ b i ≥ 2 , μ ( d ) = 0 对答案没有贡献。

因此,对答案有贡献d一定满足 bi0,1 ∀ b i ∈ 0 , 1

枚举每一个有贡献的d,就相当于是从 bi b i 中选出若干个置为1,其他的置为0。

从k个位置中选出j个位置的方案数为 Cjk C k j ,而一个由j个质因子组成的数d,有 μ(d)=(1)j μ ( d ) = ( − 1 ) j 。所以,所有由j个质数组成的d对答案的贡献和为 Cjk(1)j C k j ⋅ ( − 1 ) j

因为 j{0,1,2,...,k} j ∈ { 0 , 1 , 2 , . . . , k } ,所以:

d|nμ(d)=j=0kCjk(1)j ∑ d | n μ ( d ) = ∑ j = 0 k C k j ⋅ ( − 1 ) j

根据二项式定理:

j=0kCjkxj=(x+1)k ∑ j = 0 k C k j ⋅ x j = ( x + 1 ) k

所以:

d|nμ(d)=j=0kCjk(1)j=((1)+1)k=0 ∑ d | n μ ( d ) = ∑ j = 0 k C k j ⋅ ( − 1 ) j = ( ( − 1 ) + 1 ) k = 0

得证。

欧拉函数

定义

φ(x),xN+ φ ( x ) , x ∈ N + 表示小于x且与x互质的数的个数。

特殊地

φ(1)=1 φ ( 1 ) = 1

一些性质

积性函数の积性

gcd(a,b)=1φ(ab)=φ(a)φ(b) g c d ( a , b ) = 1 → φ ( a b ) = φ ( a ) ⋅ φ ( b )

证明很显然。

2018.3.16 填坑,后来我惊奇得发现这一点都不显然。。

gcd(n,m)=1 g c d ( n , m ) = 1 , 考虑 φ(nm) φ ( n ⋅ m ) 的物理意义。

1         2         3        ...  r       ...     m-1       m
m+1       m+2       m+3      ...  m+r     ...    2m-1      2m
2m+1     2m+2      2m+3      ... 2m+r     ...    3m-1      3m
.        .         .                             .         .
.        .         .                             .         .
.        .         .                             .         .
(n-1)m+1 (n-1)m+2  (n-1)m+3 ... (n-1)m+r  ...    nm-1      nm

φ(nm) φ ( n ⋅ m ) 的物理意义为上表中与nm互质的数的个数。

因为n和m互质,所以不难证明:一个数x与nm互质的充要条件为x与n互质且x与m互质。

证明:设P(x)为x的质因子集合。因为n和m互质,所以 P(n)P(m)=ϕ P ( n ) ∩ P ( m ) = ϕ , P(nm)=P(n)P(m) P ( n ⋅ m ) = P ( n ) ∪ P ( m )
gcd(x,n)=1P(x)P(n)=ϕ gcd ( x , n ) = 1 ⇔ P ( x ) ∩ P ( n ) = ϕ
gcd(x,m)=1P(x)P(m)=ϕ gcd ( x , m ) = 1 ⇔ P ( x ) ∩ P ( m ) = ϕ
P(n)P(m)=ϕ,P(x)(P(n)P(m))=ϕP(x)P(n)=ϕ,P(x)P(m)=ϕ P ( n ) ∩ P ( m ) = ϕ , P ( x ) ∩ ( P ( n ) ∪ P ( m ) ) = ϕ ⇔ P ( x ) ∩ P ( n ) = ϕ , P ( x ) ∩ P ( m ) = ϕ
得证。

发现每一列元素与m的gcd都相同,考虑有哪些列是与m互质的。根据定义,这样的列有 φ(m) φ ( m ) 列。

再考虑这些列中的每一列中与n互质的数的个数,因为每一横行的数在模n意义下同余。所以每一列有 φ(n) φ ( n ) 个元素与n互质。综上, φ(nm)=φ(n)φ(m) φ ( n ⋅ m ) = φ ( n ) ⋅ φ ( m ) ,及欧拉函数为积性函数。

补坑结束。


另外,当p为质数时:

φ(p)=p1 φ ( p ) = p − 1

这更加显然。

另一个基本性质

x=pa11pa22...pakk,d=pi x = p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ p k a k , d = p i

φ(xd)=φ(x)d φ ( x ⋅ d ) = φ ( x ) ⋅ d

证明:

首先 t=paiiφ(t)={1:ai=0(pi1)pai1i:ai>0 t = p i a i → φ ( t ) = { 1 : a i = 0 ( p i − 1 ) ⋅ p i a i − 1 : a i > 0 , pi p i 是质数。

考虑把一个数化成 pi p i 进制数,t一定能表示成一个1后面 ai a i 个0的形式。对于任意的一个小于t的数d与t互质,当且仅当把t化成 pi p i 进制后最后一位不为零。所以说d这个 ai a i pi p i 进制数,除了最低位不能为0,有 pi1 p i − 1 种可能外,其它的位是什么都可以,各有 pi p i 种可能。因此上式成立。

这样的话就有: φ(pk+1i)=φ(pki)pi φ ( p i k + 1 ) = φ ( p i k ) ⋅ p i , kN+ k ∈ N +

φ(xd)=φ((pa11pa22...pai1i1pai+1i+1...pakk)×pai+1i)=φ(pa11pa22...pai1i1pai+1i+1...pakk)×φ(p(ai)+1i)=φ(pa11pa22...pai1i1pai+1i+1...pakk)×φ(paii)pi=φ(x)d φ ( x ⋅ d ) = φ ( ( p 1 a 1 ⋅ p 2 a 2 ⋅ . . . p i − 1 a i − 1 ⋅ p i + 1 a i + 1 . . . ⋅ p k a k ) × p i a i + 1 ) = φ ( p 1 a 1 ⋅ p 2 a 2 ⋅ . . . p i − 1 a i − 1 ⋅ p i + 1 a i + 1 . . . ⋅ p k a k ) × φ ( p i ( a i ) + 1 ) = φ ( p 1 a 1 ⋅ p 2 a 2 ⋅ . . . p i − 1 a i − 1 ⋅ p i + 1 a i + 1 . . . ⋅ p k a k ) × φ ( p i a i ) ⋅ p i = φ ( x ) ⋅ d

得证。

还有一个比较重要的性质:

d|nφ(d)=n ∑ d | n φ ( d ) = n

哪位大神能教我一下这个怎么证啊!留坑待补。

[2018.1.22] 在此补坑。前几天碰巧在学校遇到了樊神,向樊神请教了一番,樊神几句话就证出来了,真是佩服。

f(n)=d|nφ(d) f ( n ) = ∑ d | n φ ( d ) ,显然有 f(1)=1 f ( 1 ) = 1

对于一个质数 p p f(p)=φ(1)+φ(p)=1+(p1)=p f ( p ) = φ ( 1 ) + φ ( p ) = 1 + ( p − 1 ) = p ,显然成立。

数学归纳一下,对于一个质数的若干次幂 pk p k ,若此性质已经对 pk1 p k − 1 成立:

f(pk)=kt=0φ(pt)=φ(pk)+k1t=0φ(pt)=φ(pk)+f(pk1)=(p1)pk1+pk1=pk f ( p k ) = ∑ t = 0 k φ ( p t ) = φ ( p k ) + ∑ t = 0 k − 1 φ ( p t ) = φ ( p k ) + f ( p k − 1 ) = ( p − 1 ) ⋅ p k − 1 + p k − 1 = p k

又因为该性质对k=1成立,所以该性质对任意正整数k成立。

对于一个数n,n与 pk p k (p为素数)互质,那么这个数的所有因子一定能写成n的所有因子乘上p的若干次幂的形式。

若n已经满足 f(n)=n f ( n ) = n 的性质,

f(npk)=d|n(kt=0φ(dpt)) f ( n ⋅ p k ) = ∑ d | n ( ∑ t = 0 k φ ( d ⋅ p t ) )

又因为n与 pk p k 互质,所以d与 pk p k 也一定互质, φ φ 是积性函数,所以 φ(dpt)=φ(d)φ(pt) φ ( d ⋅ p t ) = φ ( d ) ⋅ φ ( p t )

所以 f(npk)=d|n(kt=0φ(dpt))=d|nφ(d)(kt=0φ(pt))=d|nφ(d)f(pk)=f(pk)d|nφ(d)=f(pk)f(n)=npk f ( n ⋅ p k ) = ∑ d | n ( ∑ t = 0 k φ ( d ⋅ p t ) ) = ∑ d | n φ ( d ) ⋅ ( ∑ t = 0 k φ ( p t ) ) = ∑ d | n φ ( d ) ⋅ f ( p k ) = f ( p k ) ⋅ ∑ d | n φ ( d ) = f ( p k ) ⋅ f ( n ) = n ⋅ p k

对于任意的一个数都可以进行质因数分解,分解成 n=1pa11pa22...Pakk n = 1 ⋅ p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ P k a k 的形式,因为1是成立的,质数两两互质,所以任意正整数n都满足 f(n)=n f ( n ) = n

得证。

[2018.1.22] 填坑到此结束,后面的内容为之前所写。

利用这个性质可以有:

i=1ni=i=1nd|iφ(d)=d=1nφ(d)×nd ∑ i = 1 n i = ∑ i = 1 n ∑ d | i φ ( d ) = ∑ d = 1 n φ ( d ) × ⌊ n d ⌋

这里给出欧拉函数的暴力求法:

x=pa11pa22...pakkφ(x)=x(11p1)(11p2)...(11pk) x = p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ p k a k → φ ( x ) = x ⋅ ( 1 − 1 p 1 ) ⋅ ( 1 − 1 p 2 ) ⋅ . . . ⋅ ( 1 − 1 p k )

证明:

φ(x)=φ(pa11pa22...pakk)=φ(pa11)φ(pa22)...φ(pakk)=(p11)p(a1)11(p21)p(a2)12...(pk1)p(ak)1k=(11p1)pa11(11p2)pa22...(11pk)pakk=x(11p1)(11p2)...(11pk) φ ( x ) = φ ( p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ p k a k ) = φ ( p 1 a 1 ) ⋅ φ ( p 2 a 2 ) ⋅ . . . ⋅ φ ( p k a k ) = ( p 1 − 1 ) p 1 ( a 1 ) − 1 ⋅ ( p 2 − 1 ) p 2 ( a 2 ) − 1 ⋅ . . . ⋅ ( p k − 1 ) p k ( a k ) − 1 = ( 1 − 1 p 1 ) p 1 a 1 ⋅ ( 1 − 1 p 2 ) p 2 a 2 ⋅ . . . ⋅ ( 1 − 1 p k ) p k a k = x ⋅ ( 1 − 1 p 1 ) ⋅ ( 1 − 1 p 2 ) ⋅ . . . ⋅ ( 1 − 1 p k )

得证。

狄利克雷卷积

一种生成函数的运算,定义如下:

(f×g)(n)=d|nf(d)g(nd) ( f × g ) ( n ) = ∑ d | n f ( d ) ⋅ g ( n d )

常见积性函数

单位函数: id(n)=n i d ( n ) = n

元函数: e(n)=[n==1] e ( n ) = [ n == 1 ]

1函数: I(n)=1 I ( n ) = 1

约数个数: d(n)=d|n1 d ( n ) = ∑ d | n 1

一些常见的性质

f f 为积性函数。

(f×e)(n)=d|nf(d)×e(nd)=d|nf(d)×[nd=1]=f(n) ( f × e ) ( n ) = ∑ d | n f ( d ) × e ( n d ) = ∑ d | n f ( d ) × [ n d = 1 ] = f ( n )

即:

f×e=f f × e = f

另外,狄利克雷卷积满足交换律和结合律。

φ×I=id φ × I = i d

证明:

φ×I=d|nφ(d)I(nd)=d|nφ(d)=n φ × I = ∑ d | n φ ( d ) ⋅ I ( n d ) = ∑ d | n φ ( d ) = n

得证。

μ×I=e μ × I = e

证明:

(μ×I)(n)=d|nμ(d)I(nd)=d|nμ(d)=[n=1]=e(n) ( μ × I ) ( n ) = ∑ d | n μ ( d ) ⋅ I ( n d ) = ∑ d | n μ ( d ) = [ n = 1 ] = e ( n )

莫比乌斯反演

内容

若:

F(n)=d|nf(n) F ( n ) = ∑ d | n f ( n )

则:

f(n)=d|nμ(d)F(nd) f ( n ) = ∑ d | n μ ( d ) ⋅ F ( n d )

用狄利克雷卷积表述如下:

若:

F=f×1 F = f × 1

则:

f=F×μ f = F × μ

从这个角度来讲,证明就很简单了:

F×μ=(f×1)×μ=f×(1×μ)=f×e=f F × μ = ( f × 1 ) × μ = f × ( 1 × μ ) = f × e = f

杜教筛原理

求积性函数前缀和:

S(n)=i=1nf(i) S ( n ) = ∑ i = 1 n f ( i )

当f的前缀和不好求的时候,考虑一个前缀和比较好求的g,求 f×g f × g 的前缀和。

i=1n(f×g)(i)=i=1nd|ig(d)f(id) ∑ i = 1 n ( f × g ) ( i ) = ∑ i = 1 n ∑ d | i g ( d ) ⋅ f ( i d )

枚举d,存在一个 d|i d | i ,那么 f(id) f ( i d ) 就要和 g(d) g ( d ) 相乘,而i可以为 d,2d,3d,...,dnd d , 2 d , 3 d , . . . , d ⌊ n d ⌋ ,所以 S(nd) S ( ⌊ n d ⌋ ) g(d) g ( d ) 相乘就是 g(d) g ( d ) 的贡献。

=d=1ng(d)i=1ndf(i)=d=1ng(d)S(nd) = ∑ d = 1 n g ( d ) ⋅ ∑ i = 1 ⌊ n d ⌋ f ( i ) = ∑ d = 1 n g ( d ) ⋅ S ( ⌊ n d ⌋ )

所以:

i=1n(f×g)(i)=d=1ng(d)S(nd)=g(1)S(n)+i=2ng(i)S(ni) ∑ i = 1 n ( f × g ) ( i ) = ∑ d = 1 n g ( d ) ⋅ S ( ⌊ n d ⌋ ) = g ( 1 ) S ( n ) + ∑ i = 2 n g ( i ) ⋅ S ( ⌊ n i ⌋ )

所以:

S(n)=ni=1(f×g)(i)ni=2g(i)S(ni)g(1) S ( n ) = ∑ i = 1 n ( f × g ) ( i ) − ∑ i = 2 n g ( i ) ⋅ S ( ⌊ n i ⌋ ) g ( 1 )

这样的话如果 g g (f×g) ( f × g ) 的前缀和都很好求,那么计算 S(n) S ( n ) 只需要 S(n2),S(n3),..,S(nn)=S(1) S ( ⌊ n 2 ⌋ ) , S ( ⌊ n 3 ⌋ ) , . . , S ( ⌊ n n ⌋ ) = S ( 1 ) 。而又因为 ni ⌊ n i ⌋ 只有 O(n) O ( n ) 种取值,所以记忆化搜索一下会有奇效。

关于 ni ⌊ n i ⌋ 的取值问题的证明。

1in 1 ≤ i ≤ n 时,就算是结果两两各不相同, ni ⌊ n i ⌋ 也只有 n n 种取值。

n<in n < i ≤ n 时, 1ni<n 1 ≤ ⌊ n i ⌋ < n ,就算是取遍值域中的所有值,也只有 n n 种取值。

因此 ni ⌊ n i ⌋ 的取值种数不超过 2n 2 n 种,即 O(n) O ( n ) 种。

得证。

用线性筛求出前 n23 n 2 3 的前缀和之后再递推,可以将 O(n34) O ( n 3 4 ) 优化到 O(n23) O ( n 2 3 )

你可能感兴趣的:(算法导论)