莫比乌斯反演的前置知识
定义
如果一个数论函数 f f f满足:当 n ⊥ m n\perp m n⊥m时,有
f ( n m ) = f ( n ) f ( m ) f(nm) =f(n)f(m) f(nm)=f(n)f(m)
则称其为积性函数
当不需要满足互质条件 ( n ⊥ m ) (n\perp m) (n⊥m)就能满足 f ( n m ) = f ( n ) f ( m ) f(nm) = f(n)f(m) f(nm)=f(n)f(m)时,称其为完全积性函数
若 f f f是积性函数,且 n = p 1 α 1 p 2 α 2 … p s α s n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s} n=p1α1p2α2…psαs是 n n n的标准分解,则有
f ( n ) = f ( p 1 α 1 ) f ( p 2 α 2 ) … f ( p s α s ) f(n)=f(p_1^{\alpha_1})f(p_2^{\alpha_2})…f(p_s^{\alpha_s}) f(n)=f(p1α1)f(p2α2)…f(psαs)
因此研究积性函数 f f f可以转化为研究 f ( p α ) f(p^{\alpha}) f(pα),即 f f f在素数和素数的幂上的取值。
积性函数求值
设 f f f是积性函数,为求 f ( n ) f(n) f(n),可以对 n n n分解素因子,然后计算所有的 f ( p α ) f(p^{\alpha}) f(pα)乘起来,因此积性函数求值都可以用线性筛来求
如果要对 1 1 1到 n n n之间的所有数求出 f f f,注意到 Euler \text{Euler} Euler筛法的过程中可以求出每个数的最小素因子和最小素因子的幂次,利用此就能在线性时间内计算出所需的 f f f的值
欧拉筛如何求出最小素因子的幂次
void sieve() {
ip[0] = ip[1] = 1;
alpha[1] = 0;
for (int i = 2; i < XR; i++) {
if (!ip[i]) p[c++] = i, alpha[i] = 1, p1[i] = i;
for (int j = 0; j < c && i * p[j] < XR; j++) {
ip[i * p[j]] = 1;
p1[i * p[j]] = p[j];
if (i % p[j]) alpha[i * p[j]] = 1;
else {
alpha[i * p[j]] = alpha[i] + 1;
break;
}
}
//最小素因子:p1[i] ^ alpha[i]
}
}
常见积性函数
单位函数
单位函数 ϵ ( n ) \epsilon(n) ϵ(n)定义为
ϵ ( n ) = [ n = 1 ] = { 1 , n = 1 0 , n ≠ 1 \epsilon(n)=[n=1]=\left\{ \begin{aligned} 1, & n=1 \\ 0, & n\neq 1 \end{aligned} \right. ϵ(n)=[n=1]={1,0,n=1n=1
其中 [ condition ] [\text{condition}] [condition]表示当 condition \text{condition} condition为真时取值为 1 1 1,否则为 0 0 0的函数。
除数函数
除数函数 σ k ( n ) \sigma_{k}(n) σk(n)用来表示 n n n的因子的 k k k次方之和:
σ k ( n ) = ∑ d ∣ n d k \sigma_{k}(n)=\sum_{d|n}d^{k} σk(n)=d∣n∑dk
约数个数 σ 0 ( n ) \sigma_{0}(n) σ0(n)常记为 d ( n ) d(n) d(n),约数和 σ 1 ( n ) \sigma_{1}(n) σ1(n)常记为 σ ( n ) \sigma(n) σ(n)。
可以证明除数函数都是积性函数。
证明
每个素因子对函数的贡献都是独立的,它们之间的贡献可以用乘积来衡量,举一个例子:要算 n n n的约数个数(即 d ( n ) d(n) d(n)),就要枚举 n n n的约数 d d d,考虑 n n n的标准分解,也就是 n = p 1 α 1 p 2 α 2 … p s α s n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s} n=p1α1p2α2…psαs,可以想象出 d d d的素因子也跑不出这些个素因子,只不过上面的指数不一样,假设是 β \small\beta β,那么也就是 d = p 1 β 1 p 2 β 2 … p s β s d=p_1^{\beta_1}p_2^{\beta_2}…p_s^{\beta_s} d=p1β1p2β2…psβs, β 1 \beta_1 β1显然是要在 0 0 0到 α 1 \alpha_1 α1之间,否则 d d d就不是 n n n的约数了,同理每个 β \beta β都是对应的每个 0 0 0到 α \alpha α之间的,那么 β 1 \beta_1 β1有 0 0 0到 α 1 \alpha_1 α1共 α 1 + 1 \alpha_1+1 α1+1种取值,每个 β \beta β的选取是独立的,所以他们的贡献的乘积就是 ( 1 + α 1 ) ∗ ( 1 + α 2 ) ∗ … ∗ ( 1 + α s ) (1+\alpha_1)*(1+\alpha_2)*…*(1+\alpha_s) (1+α1)∗(1+α2)∗…∗(1+αs),这就是 σ 0 \sigma_0 σ0的算法,其他的 σ k \sigma_k σk是一样的,只不过 ( 1 + α ) (1 + \alpha) (1+α)这一步要换成一个求和的形式。
素因子贡献独立是一个常见的思路。
Euler函数(欧拉函数)
Euler \text{Euler} Euler函数 φ ( n ) \varphi(n) φ(n)表示不超过 n n n且与 n n n互质的正整数的个数,即
φ ( n ) = ∑ i = 1 n [ gcd ( i , n ) = 1 ] \varphi(n)=\sum\limits_{i=1}^{n}[\gcd(i,n)=1] φ(n)=i=1∑n[gcd(i,n)=1]
比如说 φ ( 6 ) = 2 \varphi(6)=2 φ(6)=2,两个数是 1 , 5 1,5 1,5; φ ( 10 ) = 4 \varphi(10)=4 φ(10)=4,四个数分别为 1 , 3 , 5 , 7 1,3,5,7 1,3,5,7。
由 n n n的标准分解并结合容斥原理,我们可以得到欧拉函数的显示表达式:
φ ( n ) = n ⋅ ∏ i = 1 s ( 1 − 1 p i ) \varphi(n)=n·\prod_{i=1}^{s}(1-\frac{1}{p_i}) φ(n)=n⋅i=1∏s(1−pi1)
其中 p i p_i pi是质数, n = p 1 α 1 p 2 α 2 … p s α s n=p_1^{\alpha_1}p_2^{\alpha_2}…p_s^{\alpha_s} n=p1α1p2α2…psαs是 n n n的标准分解。
性质
对于任 n n n, Euler \text{Euler} Euler函数具有如下性质:
n = ∑ d ∣ n φ ( d ) n=\sum_{d|n}\varphi(d) n=d∣n∑φ(d)
要证明这个等式,我们将 1 1 1到 n n n中的所有整数按与 n n n的最大公约数分类。
若 g c d ( n , i ) = d gcd(n,i)=d gcd(n,i)=d,那么 g c d ( n d , d i ) = 1 gcd(\frac{n}{d},\frac{d}{i})=1 gcd(dn,id)=1。而又 i d \frac{i}{d} di是不超过 n d \frac{n}{d} dn的整数,故这样的 i i i有 φ ( n d ) \varphi(\frac{n}{d}) φ(dn)个。
考虑所有 d ∣ n d|n d∣n,我们就考虑到了所有 1 1 1到 n n n之间的 n n n个整数,因此有
n = ∑ d ∣ n φ ( n d ) = ∑ d ∣ n φ ( d ) n=\sum_{d|n}\varphi(\frac{n}{d})=\sum_{d|n}\varphi(d) n=d∣n∑φ(dn)=d∣n∑φ(d)
证明积性
以下是从大佬那里淘来的证明
同样的, t ⊥ n m ⇔ t ⊥ n , t ⊥ m ⇔ ( t m o d n ) ⊥ n , ( t m o d m ) ⊥ m t\perp nm\Leftrightarrow t\perp n,t\perp m\Leftrightarrow(t\bmod n)\perp n,(t\bmod m)\perp m t⊥nm⇔t⊥n,t⊥m⇔(tmodn)⊥n,(tmodm)⊥m,所以每个 [ 1 , n m ] [1, nm] [1,nm]之间的与 n m nm nm互质的数 t t t都可以对应到一个 [ 1 , n ] [1,n] [1,n]的与 n n n互质的数 t m o d n t\bmod n tmodn和一个 [ 1 , m ] [1,m] [1,m]的与 m m m互质的数 t m o d m t\bmod m tmodm。
并且根据中国剩余定理,这种对应是一一对应的(即已知 a ⊥ n , b ⊥ m a\perp n, b\perp m a⊥n,b⊥m后可以唯一确定一个 [ 1 , n m ] [1,nm] [1,nm]之间的 t t t使得 t m o d n = a , t m o d m = b t\bmod n=a, t\bmod m=b tmodn=a,tmodm=b,且 t ⊥ n m t\perp nm t⊥nm)。因此 φ ( n m ) = φ ( n ) φ ( m ) \varphi(nm)=\varphi(n)\varphi(m) φ(nm)=φ(n)φ(m) 。
然而我看不懂……还是从定义上来证明吧!
假设有两个互质的正整数 n , m n,m n,m,则
φ ( n ) = n ∏ ( 1 − 1 p i ) \varphi(n)=n\prod(1-\frac{1}{p_i}) φ(n)=n∏(1−pi1)
φ ( m ) = m ∏ ( 1 − 1 p i ′ ) \varphi(m)=m\prod(1-\frac{1}{p_{i'}}) φ(m)=m∏(1−pi′1)
φ ( n ) φ ( m ) = n ∏ ( 1 − 1 p i ) m ∏ ( 1 − 1 p i ′ ) = n m ∏ ( 1 − 1 p i ) ∏ ( 1 − 1 p i ′ ) \varphi(n)\varphi(m)=n\prod(1-\frac1{p_i})m\prod(1-\frac1{p_{i'}})=nm\prod(1-\frac1{p_i})\prod(1-\frac1{p_{i'}}) φ(n)φ(m)=n∏(1−pi1)m∏(1−pi′1)=nm∏(1−pi1)∏(1−pi′1)
因为 n , m n,m n,m互质,所以 p i p_i pi和 p i ′ p_{i'} pi′各各都不相同,且都是 n m nm nm的质因子
因此就可以推出 φ ( n m ) = φ ( n ) φ ( m ) \varphi(nm)=\varphi(n)\varphi(m) φ(nm)=φ(n)φ(m)
至此,积性函数的性质得证。但是由上面的证明可知, n , m n,m n,m必须要互质才可以满足欧拉函数是积性函数,由此可见欧拉函数不是完全积性函数
恒等函数
i d k = n k \mathbf{id}^k=n^k idk=nk, i d ( n ) = n \mathbf{id}(n)=n id(n)=n
(就酱紫一笔带过吧……)
性质
若 f ( x ) \mathbf{f}(x) f(x)和 g ( x ) g(x) g(x)均为积性函数,则以下函数也为积性函数
h ( x ) = f ( x p ) h ( x ) = f p ( x ) h ( x ) = f ( x ) g ( x ) h ( x ) = ∑ d ∣ x f ( d ) g ( x d ) \begin{aligned} h(x)&=f(x^p)\\ h(x)&=f^p(x)\\ h(x)&=f(x)g(x)\\ h(x)&=\sum_{d\mid x}f(d)g(\frac{x}{d}) \end{aligned} h(x)h(x)h(x)h(x)=f(xp)=fp(x)=f(x)g(x)=d∣x∑f(d)g(dx)
部分性质的证明
来自铃悬的数学讲堂(抄这个东西也很累……)
两个积性函数的狄利克雷卷积是积性函数
考虑到上面的性质,即“若 n ⊥ m n\perp m n⊥m则每个 n m nm nm的约数都可以分解成一个 n n n的约数和一个 m m m的约数的积”,并且有另一个性质:若 n ⊥ m , a ∣ n , b ∣ m n\perp m,a\mid n,b\mid m n⊥m,a∣n,b∣m则 a ⊥ b a\perp b a⊥b。
于是若 n ⊥ m n\perp m n⊥m,我们就有
t ( n m ) = ∑ d ∣ n m f ( d ) g ( n m d ) = ∑ a ∣ n , b ∣ m f ( a b ) g ( n m a b ) = ∑ a ∣ n , b ∣ m f ( a ) f ( b ) g ( n a ) g ( m b ) = ( ∑ a ∣ n f ( a ) g ( n a ) ) ( ∑ b ∣ m f ( b ) g ( m b ) ) = t ( n ) t ( m ) \begin{aligned}t(nm)&=\sum_{d\mid nm}f(d)g\left(\frac{nm}d\right)\\&=\sum_{a\mid n,b\mid m}f(ab)g\left(\frac{nm}{ab}\right)\\&=\sum_{a\mid n,b\mid m}f(a)f(b)g\left(\frac na\right)g\left(\frac mb\right)\\&=\left(\sum_{a\mid n}f(a)g\left(\frac na\right)\right)\left(\sum_{b\mid m}f(b)g\left(\frac mb\right)\right)\\&=t(n)t(m)\end{aligned} t(nm)=d∣nm∑f(d)g(dnm)=a∣n,b∣m∑f(ab)g(abnm)=a∣n,b∣m∑f(a)f(b)g(an)g(bm)=⎝⎛a∣n∑f(a)g(an)⎠⎞⎝⎛b∣m∑f(b)g(bm)⎠⎞=t(n)t(m)
积性函数的逆是积性函数
第二个重要的结论:积性函数的逆是积性函数。
对于一个积性函数
f
f
f ,如何证明其逆
g
(
n
)
=
[
n
=
1
]
−
∑
i
∣
n
,
i
≠
1
f
(
i
)
g
(
n
i
)
g(n)=[n=1]-\sum_{i\mid n,i\neq1}f(i)g\left(\frac ni\right)
g(n)=[n=1]−∑i∣n,i=1f(i)g(in) (注意,积性函数一定满足
f
(
1
)
=
1
f(1)=1
f(1)=1 ,因为
f
(
1
)
=
f
(
1
)
f
(
1
)
f(1)=f(1)f(1)
f(1)=f(1)f(1) ,并且如果
f
(
1
)
=
0
f(1)=0
f(1)=0 则
f
(
n
)
≡
0
f(n)\equiv0
f(n)≡0 ,这种情况我们不考虑)也满足积性呢?
对
n
m
nm
nm 的大小进行归纳:
n m = 1 nm=1 nm=1 时, g ( 1 ) = 1 g(1)=1 g(1)=1 ,结论显然成立;
假设
n
m
>
1
nm > 1
nm>1 ,当
n
′
m
′
<
n
m
n'm'< nm
n′m′<nm 的时候有
g
(
n
′
m
′
)
=
g
(
n
′
)
g
(
m
′
)
g(n'm')=g(n')g(m')
g(n′m′)=g(n′)g(m′) ,
g
(
n
m
)
=
−
∑
d
∣
n
m
,
d
≠
1
f
(
d
)
g
(
n
m
d
)
=
−
∑
a
∣
n
,
b
∣
m
,
a
b
≠
1
f
(
a
b
)
g
(
n
m
a
b
)
=
−
∑
a
∣
n
,
b
∣
m
,
a
b
≠
1
f
(
a
)
f
(
b
)
g
(
n
a
)
g
(
m
b
)
=
f
(
1
)
f
(
1
)
g
(
n
)
g
(
m
)
−
∑
a
∣
n
,
b
∣
m
f
(
a
)
f
(
b
)
g
(
n
a
)
g
(
m
b
)
=
g
(
n
)
g
(
m
)
−
(
∑
a
∣
n
f
(
a
)
g
(
n
a
)
)
(
∑
b
∣
m
f
(
b
)
g
(
m
b
)
)
=
g
(
n
)
g
(
m
)
−
ϵ
(
n
)
ϵ
(
m
)
=
g
(
n
)
g
(
m
)
\begin{aligned}g(nm)&=-\sum_{d\mid nm,d\neq1}f(d)g\left(\frac{nm}d\right)\\&=-\sum_{a\mid n,b\mid m,ab\neq1}f(ab)g\left(\frac{nm}{ab}\right)\\&=-\sum_{a\mid n,b\mid m,ab\neq1}f(a)f(b)g\left(\frac na\right)g\left(\frac mb\right)\\&=f(1)f(1)g(n)g(m)-\sum_{a\mid n,b\mid m}f(a)f(b)g\left(\frac na\right)g\left(\frac mb\right)\\&=g(n)g(m)-\left(\sum_{a\mid n}f(a)g\left(\frac na\right)\right)\left(\sum_{b\mid m}f(b)g\left(\frac mb\right)\right)\\&=g(n)g(m)-\epsilon(n)\epsilon(m)\\&=g(n)g(m)\end{aligned}
g(nm)=−d∣nm,d=1∑f(d)g(dnm)=−a∣n,b∣m,ab=1∑f(ab)g(abnm)=−a∣n,b∣m,ab=1∑f(a)f(b)g(an)g(bm)=f(1)f(1)g(n)g(m)−a∣n,b∣m∑f(a)f(b)g(an)g(bm)=g(n)g(m)−⎝⎛a∣n∑f(a)g(an)⎠⎞⎝⎛b∣m∑f(b)g(bm)⎠⎞=g(n)g(m)−ϵ(n)ϵ(m)=g(n)g(m)
注意前面几步把
g
(
n
m
a
b
)
g(\frac{nm}{ab})
g(abnm) 拆成
g
(
n
/
a
)
g
(
m
/
b
)
g(n/a)g(m/b)
g(n/a)g(m/b) 的时候
n
m
a
b
<
n
m
\frac{nm}{ab}<nm
abnm<nm ,可以运用归纳条件。
最后一步是因为
n
m
>
1
nm>1
nm>1 所以
n
,
m
n,m
n,m 之间至少一个不为
1
1
1 ,则
ϵ
(
n
)
ϵ
(
m
)
=
[
n
=
1
]
[
m
=
1
]
=
0
\epsilon(n)\epsilon(m)=[n=1][m=1]=0
ϵ(n)ϵ(m)=[n=1][m=1]=0 。
就酱紫吧