2017 CDQZ 联训 中向 HSZX 的大佬请教了一些关于莫反的知识,特此感谢!
本文仅介绍一些关于莫比乌斯反演的基础知识。
声明
本文中,若无特殊声明
pa11⋅pa22⋅...⋅Pakk
表示一个数的质因数分解,
∀i,prime(pi)∧ai∈N+
莫比乌斯函数
定义
莫比乌斯函数是在数论中一个很重要的积性函数,定义如下。
若正整数x可质因数分解为:
x=pa11⋅pa22⋅...⋅Pakk
μ(x)=⎧⎩⎨0:∃ai≥21:k≡0mod2−1:k≡1mod2
即当
x≠1
,且不存在平方因子时:
μ(x)=(−1)k
当x存在平方因子时:
μ(x)=0
特殊地:
μ(1)=1
一些性质
此性质可用来判断一个数是否等于一。
∑d|nμ(d)=[n=1]
证明:
当
n=1
时显然成立。
当
n≠1
时,不妨令
n=pa11⋅pa22⋅...⋅Pakk
,那么n的因子
d=pb11⋅pb22⋅...⋅Pbkk,0≤bi≤ai
。
若
∃bi≥2,μ(d)=0
对答案没有贡献。
因此,对答案有贡献d一定满足
∀bi∈0,1
。
枚举每一个有贡献的d,就相当于是从
bi
中选出若干个置为1,其他的置为0。
从k个位置中选出j个位置的方案数为
Cjk
,而一个由j个质因子组成的数d,有
μ(d)=(−1)j
。所以,所有由j个质数组成的d对答案的贡献和为
Cjk⋅(−1)j
。
因为
j∈{0,1,2,...,k}
,所以:
∑d|nμ(d)=∑j=0kCjk⋅(−1)j
根据二项式定理:
∑j=0kCjk⋅xj=(x+1)k
所以:
∑d|nμ(d)=∑j=0kCjk⋅(−1)j=((−1)+1)k=0
得证。
欧拉函数
定义
φ(x),x∈N+
表示小于x且与x互质的数的个数。
特殊地
φ(1)=1
一些性质
积性函数の积性
gcd(a,b)=1→φ(ab)=φ(a)⋅φ(b)
证明很显然。
2018.3.16 填坑,后来我惊奇得发现这一点都不显然。。
令
gcd(n,m)=1
, 考虑
φ(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)
的物理意义为上表中与nm互质的数的个数。
因为n和m互质,所以不难证明:一个数x与nm互质的充要条件为x与n互质且x与m互质。
证明:设P(x)为x的质因子集合。因为n和m互质,所以
P(n)∩P(m)=ϕ
,
P(n⋅m)=P(n)∪P(m)
gcd(x,n)=1⇔P(x)∩P(n)=ϕ
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)=ϕ
得证。
发现每一列元素与m的gcd都相同,考虑有哪些列是与m互质的。根据定义,这样的列有
φ(m)
列。
再考虑这些列中的每一列中与n互质的数的个数,因为每一横行的数在模n意义下同余。所以每一列有
φ(n)
个元素与n互质。综上,
φ(n⋅m)=φ(n)⋅φ(m)
,及欧拉函数为积性函数。
补坑结束。
另外,当p为质数时:
φ(p)=p−1
这更加显然。
另一个基本性质
x=pa11⋅pa22⋅...⋅pakk,d=pi
φ(x⋅d)=φ(x)⋅d
证明:
首先
t=paii→φ(t)={1:ai=0(pi−1)⋅pai−1i:ai>0
,
pi
是质数。
考虑把一个数化成
pi
进制数,t一定能表示成一个1后面
ai
个0的形式。对于任意的一个小于t的数d与t互质,当且仅当把t化成
pi
进制后最后一位不为零。所以说d这个
ai
位
pi
进制数,除了最低位不能为0,有
pi−1
种可能外,其它的位是什么都可以,各有
pi
种可能。因此上式成立。
这样的话就有:
φ(pk+1i)=φ(pki)⋅pi
,
k∈N+
φ(x⋅d)=φ((pa11⋅pa22⋅...pai−1i−1⋅pai+1i+1...⋅pakk)×pai+1i)=φ(pa11⋅pa22⋅...pai−1i−1⋅pai+1i+1...⋅pakk)×φ(p(ai)+1i)=φ(pa11⋅pa22⋅...pai−1i−1⋅pai+1i+1...⋅pakk)×φ(paii)⋅pi=φ(x)⋅d
得证。
还有一个比较重要的性质:
∑d|nφ(d)=n
哪位大神能教我一下这个怎么证啊!留坑待补。
[2018.1.22] 在此补坑。前几天碰巧在学校遇到了樊神,向樊神请教了一番,樊神几句话就证出来了,真是佩服。
令
f(n)=∑d|nφ(d)
,显然有
f(1)=1
。
对于一个质数
p
,
f(p)=φ(1)+φ(p)=1+(p−1)=p
,显然成立。
数学归纳一下,对于一个质数的若干次幂
pk
,若此性质已经对
pk−1
成立:
有
f(pk)=∑kt=0φ(pt)=φ(pk)+∑k−1t=0φ(pt)=φ(pk)+f(pk−1)=(p−1)⋅pk−1+pk−1=pk
。
又因为该性质对k=1成立,所以该性质对任意正整数k成立。
对于一个数n,n与
pk
(p为素数)互质,那么这个数的所有因子一定能写成n的所有因子乘上p的若干次幂的形式。
若n已经满足
f(n)=n
的性质,
有
f(n⋅pk)=∑d|n(∑kt=0φ(d⋅pt))
。
又因为n与
pk
互质,所以d与
pk
也一定互质,
φ
是积性函数,所以
φ(d⋅pt)=φ(d)⋅φ(pt)
所以
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
。
对于任意的一个数都可以进行质因数分解,分解成
n=1⋅pa11⋅pa22⋅...⋅Pakk
的形式,因为1是成立的,质数两两互质,所以任意正整数n都满足
f(n)=n
。
得证。
[2018.1.22] 填坑到此结束,后面的内容为之前所写。
利用这个性质可以有:
∑i=1ni=∑i=1n∑d|iφ(d)=∑d=1nφ(d)×⌊nd⌋
这里给出欧拉函数的暴力求法:
x=pa11⋅pa22⋅...⋅pakk→φ(x)=x⋅(1−1p1)⋅(1−1p2)⋅...⋅(1−1pk)
证明:
φ(x)=φ(pa11⋅pa22⋅...⋅pakk)=φ(pa11)⋅φ(pa22)⋅...⋅φ(pakk)=(p1−1)p(a1)−11⋅(p2−1)p(a2)−12⋅...⋅(pk−1)p(ak)−1k=(1−1p1)pa11⋅(1−1p2)pa22⋅...⋅(1−1pk)pakk=x⋅(1−1p1)⋅(1−1p2)⋅...⋅(1−1pk)
得证。
狄利克雷卷积
一种生成函数的运算,定义如下:
(f×g)(n)=∑d|nf(d)⋅g(nd)
常见积性函数
单位函数:
id(n)=n
。
元函数:
e(n)=[n==1]
。
1函数:
I(n)=1
。
约数个数:
d(n)=∑d|n1
。
一些常见的性质
f
为积性函数。
(f×e)(n)=∑d|nf(d)×e(nd)=∑d|nf(d)×[nd=1]=f(n)
即:
f×e=f
另外,狄利克雷卷积满足交换律和结合律。
φ×I=id
证明:
φ×I=∑d|nφ(d)⋅I(nd)=∑d|nφ(d)=n
得证。
μ×I=e
证明:
(μ×I)(n)=∑d|nμ(d)⋅I(nd)=∑d|nμ(d)=[n=1]=e(n)
莫比乌斯反演
内容
若:
F(n)=∑d|nf(n)
则:
f(n)=∑d|nμ(d)⋅F(nd)
用狄利克雷卷积表述如下:
若:
F=f×1
则:
f=F×μ
从这个角度来讲,证明就很简单了:
F×μ=(f×1)×μ=f×(1×μ)=f×e=f
杜教筛原理
求积性函数前缀和:
S(n)=∑i=1nf(i)
当f的前缀和不好求的时候,考虑一个前缀和比较好求的g,求
f×g
的前缀和。
∑i=1n(f×g)(i)=∑i=1n∑d|ig(d)⋅f(id)
枚举d,存在一个
d|i
,那么
f(id)
就要和
g(d)
相乘,而i可以为
d,2d,3d,...,d⌊nd⌋
,所以
S(⌊nd⌋)
与
g(d)
相乘就是
g(d)
的贡献。
=∑d=1ng(d)⋅∑i=1⌊nd⌋f(i)=∑d=1ng(d)⋅S(⌊nd⌋)
所以:
∑i=1n(f×g)(i)=∑d=1ng(d)⋅S(⌊nd⌋)=g(1)S(n)+∑i=2ng(i)⋅S(⌊ni⌋)
所以:
S(n)=∑ni=1(f×g)(i)−∑ni=2g(i)⋅S(⌊ni⌋)g(1)
这样的话如果
g
和
(f×g)
的前缀和都很好求,那么计算
S(n)
只需要
S(⌊n2⌋),S(⌊n3⌋),..,S(⌊nn⌋)=S(1)
。而又因为
⌊ni⌋
只有
O(n−−√)
种取值,所以记忆化搜索一下会有奇效。
关于
⌊ni⌋
的取值问题的证明。
当
1≤i≤n−−√
时,就算是结果两两各不相同,
⌊ni⌋
也只有
n−−√
种取值。
当
n−−√<i≤n
时,
1≤⌊ni⌋<n−−√
,就算是取遍值域中的所有值,也只有
n−−√
种取值。
因此
⌊ni⌋
的取值种数不超过
2n−−√
种,即
O(n−−√)
种。
得证。
用线性筛求出前
n23
的前缀和之后再递推,可以将
O(n34)
优化到
O(n23)
。