从 φ \varphi φ 函数 和 μ \mu μ 函数开始
首先是 φ \varphi φ (欧拉)函数的定义
0
0
0 到
m
−
1
m-1
m−1 的整数中和
m
m
m 互素的个数为
φ
(
m
)
\varphi (m)
φ(m)
对于每个素数
p
p
p ,
φ
(
p
)
=
p
−
1
\varphi(p)=p-1
φ(p)=p−1
这是因为素数的定义:除自己本身外,其余全部与
p
p
p 互素
我们可以计算素数幂
φ
(
p
k
)
=
p
k
−
p
k
−
1
\varphi(p^k)=p^k-p^{k-1}
φ(pk)=pk−pk−1
因为在
0
∼
p
k
0\sim p^k
0∼pk 中
p
p
p 的倍数是
0
,
p
,
2
p
,
.
.
.
,
p
k
−
p
,
p
k
0,p,2p,...,p^k-p,p^k
0,p,2p,...,pk−p,pk 去掉最后一项,我们得到总共与
p
k
p^k
pk 有因子关系的数只有
p
k
−
1
p^{k-1}
pk−1 个,至于怎么数出来的我们可以简单看下它每个
p
p
p 前面的系数,“系数
+
1
+1
+1 ” 就是标号,从
1
,
2
,
3
1,2,3
1,2,3 一直标到
p
k
−
1
p^{k-1}
pk−1
互素的个数
φ
(
p
k
)
\varphi(p^k)
φ(pk) 即为 {总数}
−
-
− {与
p
k
p^k
pk 有公因子的数}
同时欧拉函数还是一个积性函数,原因是 φ ( 1 ) = 1 , φ ( m 1 m 2 ) = φ ( m 1 ) φ ( m 2 ) \varphi(1)=1, \quad\varphi(m_1 m_2)=\varphi(m_1)\varphi(m_2) φ(1)=1,φ(m1m2)=φ(m1)φ(m2) 同时 m 1 m_1 m1 与 m 2 m_2 m2 互素
一个很好的例子体会一下
φ
(
12
)
=
φ
(
4
)
φ
(
3
)
=
2
×
2
=
4
\varphi(12)=\varphi(4)\varphi(3)=2\times 2=4
φ(12)=φ(4)φ(3)=2×2=4
想要进一步的理解我们需要补充一下剩余系的概念
剩余系
R
e
s
(
x
)
=
(
x
m
o
d
m
1
,
x
m
o
d
m
2
,
.
.
.
,
x
m
o
d
m
r
)
Res(x)=(x\ mod\ m_1, x\ mod\ m_2, ..., x\ mod\ m_r)
Res(x)=(x mod m1,x mod m2,...,x mod mr) 同时所有的
m
m
m 全都互素,它的意义就是通过同余式的性质,我们可以在不同的分量上独立的进行加减乘法
n n n 与 12 12 12 互素当且仅当 n m o d 4 = ( 1 o r 3 ) ( n\ mod\ 4=(1\ or\ 3)( n mod 4=(1 or 3)( 与 4 4 4 互素的两个数 ) ) ) 而且 n m o d 3 = ( 1 o r 2 ) ( n\ mod\ 3=(1\ or\ 2)( n mod 3=(1 or 2)( 与 3 3 3 互素的两个数 ) ) ) 这 2 × 2 2\times 2 2×2 个与 12 12 12 互素的值就是它们的组合 ( 1 , 1 ) , ( 1 , 2 ) , ( 3 , 1 ) , ( 3 , 2 ) (1,1),(1,2),(3,1),(3,2) (1,1),(1,2),(3,1),(3,2)
一个积性函数完全由它在素数幂的值定义,所以在计算 φ \varphi φ 函数的时候就可以将任意的正整数 m m m 分解成素数的幂因子,对这些幂因子直接求解 φ \varphi φ 函数,然后再乘起来,就可以很方便的计算它的值
对于 φ \varphi φ 函数还有一个有意思的公式,后面的证明需要用到 ∑ d \ m φ ( d ) = m \sum\limits_{d\backslash m} \varphi(d)=m d\m∑φ(d)=m对所有的 m m m 的因子 d d d 经过 φ \varphi φ 函数映射后求和为 m m m
要理解这个公式我们可以从分数上找到这样的关系:将 0 m , 1 m , . . . , m − 1 m \frac{0}{m},\frac{1}{m},...,\frac{m-1}{m} m0,m1,...,mm−1 将这样 m m m 个数约分后分母相同的分数分为一类,而每一类有 φ ( d ) \varphi(d) φ(d) 个。这样所有的 φ ( d ) \varphi(d) φ(d) 相加就是 m m m
莫比乌斯函数
莫比乌斯函数的定义 (中括号表示:里面的表达式若成立则整个值为1,否则为0)
∑
d
\
m
μ
(
d
)
=
[
m
=
1
]
\sum\limits_{d\backslash m}\mu(d)=[m=1]
d\m∑μ(d)=[m=1]这是一个递归定义,有了这个式子我们很容易的将
m
m
m 带入
1
1
1 来算出
μ
(
1
)
\mu(1)
μ(1) 的值
1
1
1 的因子为
1
1
1 ,
μ
(
1
)
=
1
2
\mu(1)=1\\ 2
μ(1)=12 的因子为
1
,
2
1,2
1,2 ,
μ
(
1
)
+
μ
(
2
)
=
0
\mu(1)+\mu(2)=0
μ(1)+μ(2)=0 ,解得
μ
(
2
)
=
−
1
3
\mu(2)=-1\\ 3
μ(2)=−13 的因子为
1
,
3
1,3
1,3 ,
μ
(
1
)
+
μ
(
3
)
=
0
\mu(1)+\mu(3)=0
μ(1)+μ(3)=0 ,解得
μ
(
3
)
=
−
1
4
\mu(3)=-1\\ 4
μ(3)=−14 的因子为
1
,
2
,
4
1,2,4
1,2,4 ,
μ
(
1
)
+
μ
(
2
)
+
μ
(
4
)
=
0
\mu(1)+\mu(2)+\mu(4)=0
μ(1)+μ(2)+μ(4)=0 ,得到
1
−
1
+
μ
(
4
)
=
0
1-1+\mu(4)=0
1−1+μ(4)=0 ,解得
μ
(
4
)
=
0
\mu(4)=0
μ(4)=0
已经可以看出一点规律的影子,另一个关于
μ
\mu
μ 函数的定义明确的展示了它的特点
μ
(
n
)
=
{
1
如
果
n
=
1
(
−
1
)
r
如
果
n
=
p
1
p
2
.
.
.
p
r
,
p
i
是
各
不
相
同
的
素
数
0
其
他
\mu(n)=\begin{cases} 1 & 如果\ n=1 \\ (-1)^r & 如果\ n=p_1p_2...p_r,\ p_i是各不相同的素数 \\ 0 & 其他 \end{cases}
μ(n)=⎩⎪⎨⎪⎧1(−1)r0如果 n=1如果 n=p1p2...pr, pi是各不相同的素数其他
莫比乌斯反演
什么叫做反演呢?
简单来讲,如果有一个函数
g
g
g ,它的作用是将
m
m
m 的所有因子经过积性函数
f
f
f 的映射之后再求和,我们想要使用
g
g
g 来表示
f
f
f 的公式就需要用到反演。
莫比乌斯反演的公式是这样的,如果有
g
(
m
)
=
∑
d
\
m
f
(
d
)
g(m)=\sum\limits_{d\backslash m}f(d)
g(m)=d\m∑f(d) 则
f
(
m
)
=
∑
d
\
m
μ
(
d
)
g
(
m
d
)
f(m)=\sum\limits_{d\backslash m}\mu(d)g\left(\frac{m}{d}\right)
f(m)=d\m∑μ(d)g(dm)
接下来就是非常详细的证明过程解读:每一步都是一个定理,仔细看吧。
第一步
∑
d
\
m
μ
(
d
)
g
(
m
d
)
=
∑
d
\
m
μ
(
m
d
)
g
(
d
)
\sum\limits_{d\backslash m}\mu(d)g\left(\frac{m}{d}\right)=\sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)g(d)
d\m∑μ(d)g(dm)=d\m∑μ(dm)g(d)
我们慢慢把它搞清楚,它使用了这样一个定理
∑
m
\
n
a
m
=
∑
m
\
n
a
n
/
m
\sum\limits_{m\backslash n}a_m=\sum\limits_{m\backslash n}a_{n/m}
m\n∑am=m\n∑an/m 因为在本质上
n
n
n 和
n
/
m
n/m
n/m 都是
m
m
m 的因子,而且相乘得
m
m
m ,在遍历
m
m
m 的同时实际上也就遍历了
n
/
m
n/m
n/m ,它将原式里的参数
m
m
m 替换为了
n
/
m
n/m
n/m 。我们的第一步也是同样的思路,我们将式子中参数
m
m
m 的因子
d
d
d 替换为
m
/
d
m/d
m/d ,和式仍然遍历所有的项,等式成立。
第二步:
∑
d
\
m
μ
(
m
d
)
g
(
d
)
=
∑
d
\
m
μ
(
m
d
)
∑
k
\
d
f
(
k
)
\sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)g(d)=\sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)\sum\limits_{k\backslash d}f(k)
d\m∑μ(dm)g(d)=d\m∑μ(dm)k\d∑f(k)
第二步我们使用了
g
g
g 的定义
g
(
m
)
=
∑
d
\
m
f
(
d
)
g(m)=\sum\limits_{d\backslash m}f(d)
g(m)=d\m∑f(d)
第三步:
∑
d
\
m
μ
(
m
d
)
∑
k
\
d
f
(
k
)
=
∑
k
\
m
∑
d
\
(
m
/
k
)
μ
(
m
k
d
)
f
(
k
)
\sum\limits_{d\backslash m}\mu\left(\frac{m}{d}\right)\sum\limits_{k\backslash d}f(k)=\sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu\left(\frac{m}{kd}\right)f(k)
d\m∑μ(dm)k\d∑f(k)=k\m∑d\(m/k)∑μ(kdm)f(k)
这一步是比较难理解的,用到的公式是这样的
∑
m
\
n
∑
k
\
m
a
k
,
m
=
∑
k
\
n
∑
l
\
(
n
/
k
)
a
k
,
k
l
\sum\limits_{m\backslash n}\sum\limits_{k\backslash m}a_{k,m}=\sum\limits_{k\backslash n} \ \sum\limits_{l\backslash (n/k)}a_{k,kl}
m\n∑k\m∑ak,m=k\n∑ l\(n/k)∑ak,kl
这里的公式其实就是变换了一个下标的分组,它的求和 第二维是
n
n
n 的因子
m
m
m ,第一维是
m
m
m 的因子
k
k
k ,转换之后、第一维
k
k
k 直接是
n
n
n 的因子,跳过了
m
m
m ,第二维则是
l
l
l 因为
n
/
k
n/k
n/k 和
k
k
k 是同阶的,而
l
l
l 又是
n
/
k
n/k
n/k 的因子,你会发现它也是对儿子和儿子的儿子进行了分别两次求和,它们说的其实是一回事,唯一的区别就是后者用
k
l
kl
kl 替换了
m
m
m 。这里的第三步则是这样的,我们在式子中使用
k
d
kd
kd 来替换
d
d
d ,而求和下标则用我们的
m
m
m 的因子
d
d
d 的因子
k
k
k 跳过
d
d
d 直接成为
m
m
m 的因子,使用
m
/
k
m/k
m/k 的因子
d
d
d 作为第二维求和的下标。
第四步: ∑ k \ m ∑ d \ ( m / k ) μ ( m k d ) f ( k ) = ∑ k \ m ∑ d \ ( m / k ) μ ( d ) f ( k ) \sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu\left(\frac{m}{kd}\right)f(k)=\sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu(d)f(k) k\m∑d\(m/k)∑μ(kdm)f(k)=k\m∑d\(m/k)∑μ(d)f(k)和第一步类似,我们将 m / k m/k m/k 看作一个整体,遍历 m / k m/k m/k 的因子 d d d 的同时,也就遍历了 m / k m/k m/k 的另一个因子 ( m / k ) / d (m/k)/d (m/k)/d.
第五步: ∑ k \ m ∑ d \ ( m / k ) μ ( d ) f ( k ) = ∑ k \ m [ m / k = 1 ] f ( k ) \sum\limits_{k\backslash m}\sum\limits_{d\backslash (m/k)}\mu(d)f(k)=\sum\limits_{k\backslash m}[m/k=1]f(k) k\m∑d\(m/k)∑μ(d)f(k)=k\m∑[m/k=1]f(k)这一步则是莫比乌斯函数的定义
最后:由于除了m=k的项被累加进入和式以外,其余项都为0
∑
k
\
m
[
m
/
k
=
1
]
f
(
k
)
=
f
(
m
)
\sum\limits_{k\backslash m}[m/k=1]f(k)=f(m)
k\m∑[m/k=1]f(k)=f(m)证明结束。
至于莫比乌斯反演的用途,我就不多讲了,是一个非常有用的公式。详解的证明过程就分享出来为了帮助大家理解。
Have a good time!
参考文献
Ronald L. Graham, Donald E.Knuth, Oren Patashnik. Concrete Math.
Kenneth H.Rosen. Elementary Number Theory and Its Applications.