2017 CDQZ 联训 中向 HSZX 的大佬请教了一些关于莫反的知识,特此感谢!
本文仅介绍一些关于莫比乌斯反演的基础知识。
本文中,若无特殊声明 pa11⋅pa22⋅...⋅Pakk p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ P k a k 表示一个数的质因数分解, ∀i,prime(pi)∧ai∈N+ ∀ i , p r i m e ( p i ) ∧ a i ∈ N +
莫比乌斯函数是在数论中一个很重要的积性函数,定义如下。
若正整数x可质因数分解为:
即当 x≠1 x ≠ 1 ,且不存在平方因子时:
当x存在平方因子时:
特殊地:
此性质可用来判断一个数是否等于一。
证明:
当 n=1 n = 1 时显然成立。
当 n≠1 n ≠ 1 时,不妨令 n=pa11⋅pa22⋅...⋅Pakk n = p 1 a 1 ⋅ p 2 a 2 ⋅ . . . ⋅ P k a k ,那么n的因子 d=pb11⋅pb22⋅...⋅Pbkk,0≤bi≤ai d = p 1 b 1 ⋅ p 2 b 2 ⋅ . . . ⋅ P k b k , 0 ≤ b i ≤ a i 。
若 ∃bi≥2,μ(d)=0 ∃ b i ≥ 2 , μ ( d ) = 0 对答案没有贡献。
因此,对答案有贡献d一定满足 ∀bi∈0,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 } ,所以:
根据二项式定理:
所以:
得证。
φ(x),x∈N+ φ ( x ) , x ∈ N + 表示小于x且与x互质的数的个数。
特殊地
φ(1)=1 φ ( 1 ) = 1
积性函数の积性
证明很显然。
2018.3.16 填坑,后来我惊奇得发现这一点都不显然。。
令 gcd(n,m)=1 g c d ( n , m ) = 1 , 考虑 φ(n⋅m) φ ( 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
φ(n⋅m) φ ( 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(n⋅m)=P(n)∪P(m) P ( n ⋅ m ) = P ( n ) ∪ P ( m )
gcd(x,n)=1⇔P(x)∩P(n)=ϕ gcd ( x , n ) = 1 ⇔ P ( x ) ∩ P ( n ) = ϕ
gcd(x,m)=1⇔P(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互质。综上, φ(n⋅m)=φ(n)⋅φ(m) φ ( n ⋅ m ) = φ ( n ) ⋅ φ ( m ) ,及欧拉函数为积性函数。
补坑结束。
另外,当p为质数时:
这更加显然。
另一个基本性质
证明:
首先 t=paii→φ(t)={1:ai=0(pi−1)⋅pai−1i: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,有 pi−1 p i − 1 种可能外,其它的位是什么都可以,各有 pi p i 种可能。因此上式成立。
这样的话就有: φ(pk+1i)=φ(pki)⋅pi φ ( p i k + 1 ) = φ ( p i k ) ⋅ p i , k∈N+ k ∈ 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+(p−1)=p f ( p ) = φ ( 1 ) + φ ( p ) = 1 + ( p − 1 ) = p ,显然成立。
数学归纳一下,对于一个质数的若干次幂 pk p k ,若此性质已经对 pk−1 p k − 1 成立:
有 f(pk)=∑kt=0φ(pt)=φ(pk)+∑k−1t=0φ(pt)=φ(pk)+f(pk−1)=(p−1)⋅pk−1+pk−1=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(n⋅pk)=∑d|n(∑kt=0φ(d⋅pt)) f ( n ⋅ p k ) = ∑ d | n ( ∑ t = 0 k φ ( d ⋅ p t ) ) 。
又因为n与 pk p k 互质,所以d与 pk p k 也一定互质, φ φ 是积性函数,所以 φ(d⋅pt)=φ(d)⋅φ(pt) φ ( d ⋅ p t ) = φ ( d ) ⋅ φ ( p t )
所以 f(n⋅pk)=∑d|n(∑kt=0φ(d⋅pt))=∑d|nφ(d)⋅(∑kt=0φ(pt))=∑d|nφ(d)⋅f(pk)=f(pk)⋅∑d|nφ(d)=f(pk)⋅f(n)=n⋅pk 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=1⋅pa11⋅pa22⋅...⋅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] 填坑到此结束,后面的内容为之前所写。
利用这个性质可以有:
这里给出欧拉函数的暴力求法:
证明:
得证。
一种生成函数的运算,定义如下:
单位函数: 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的前缀和不好求的时候,考虑一个前缀和比较好求的g,求 f×g f × g 的前缀和。
枚举d,存在一个 d|i d | i ,那么 f(id) f ( i d ) 就要和 g(d) g ( d ) 相乘,而i可以为 d,2d,3d,...,d⌊nd⌋ d , 2 d , 3 d , . . . , d ⌊ n d ⌋ ,所以 S(⌊nd⌋) S ( ⌊ n d ⌋ ) 与 g(d) g ( d ) 相乘就是 g(d) g ( d ) 的贡献。
所以:
所以:
这样的话如果 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 ⌋ 的取值问题的证明。
当 1≤i≤n−−√ 1 ≤ i ≤ n 时,就算是结果两两各不相同, ⌊ni⌋ ⌊ n i ⌋ 也只有 n−−√ n 种取值。
当 n−−√<i≤n n < i ≤ n 时, 1≤⌊ni⌋<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 ) 。