初探莫比乌斯反演
更好的阅读体验?
引入
算术函数
在数论中,我们研究的对象是正整数,因此数论中关心的函数,定义域就变成了正整数集,那么这一类函数叫做算术函数。
例如下面的这个函数:
这个函数是欧拉函数,它代表的是小于等于
积性函数
如果
注意到欧拉函数是积性的,但这非本文讨论范围,故不给出证明。
那为什么要关心这个性质呢?根据唯一分解定理,任意大于
如果一个函数是积性的,那么它所有地方的函数值都由质数幂次处的函数值决定。
和函数
对于算术函数
即对所有正整数约数
例如:
即欧拉函数的和函数是恒等函数
莫比乌斯反演的形式
对于给定的
观察下列的几个等式:
将
现在发挥注意力,注意到右边
这个变形叫做莫比乌斯反演,这种形式就是狄利克雷卷积。这里的
莫比乌斯函数
形式
现在我们已经有了如下的变形:
我们来推导莫比乌斯函数
-
当
n = 1 时由
F(1)=f(1) ,同时反演公式给出:f(1) = \mu(1)F(1) 这里取一个
f(1)\neq 0 的算术函数,所以\mu(1)=1 。 -
当
n 为质数时设
n=p ,则F(p)=f(p)+f(1) ,所以f(p)=F(p)-F(1) 。代入反演公式:
f(p)=\mu(1)F(p)+\mu(p)F(1) 即
F(p)-F(1)=F(p)+\mu(p)F(1) 所以
\mu(p)=-1 。 -
当
n 为质数的幂时,记n=p^k -
当
k=2 时代入反演公式: $$ f(p^2)=\mu(1)F(p^2)+\mu(p)F(p)+\mu(p^2)F(1) $$ 即 $$ F(p^2)-F(p)=F(p^2)-F(p)+\mu(p^2)F(1) $$ 所以 $\mu(p^2)=0$。 -
当
k=3 时$$ f(p^3)=F(p^3)-F(p^2) $$ 代入反演公式: $$ f(p^3)=\mu(1)F(p^3)+\mu(p)F(p^2)+\mu(p^2)F(p)+\mu(p^3)F(1) $$ 因为 $\mu(1)=1,\mu(p)=-1,\mu(p^2)=0$,得到 $$ F(p^3)-F(p^2)=F(p^3)-F(p^2)+\mu(p^3)F(1) $$ 所以 $\mu(p^3)=0$。
同理,对任意
k\ge 2 ,可归纳得到\mu(p^k)=0 。 -
-
当
n 为合数时为了处理合数,我们需要知道
\mu 的积性。事实上,\mu 是积性函数,即若\gcd(a,b)=1 ,则\mu(ab)=\mu(a)\mu(b) 证明:设
a 有平方因子(由于a,b 对称,这里只讨论a 有平方因子),则ab 也有平方因子,两边均为0 ;设a,b 都无平方因子,且a=p_1p_2\cdots p_r,\quad b=q_1q_2\cdots q_s 其中所有
p_i,q_j 互不相同。于是ab 是r+s 个不同素数之积,所以\mu(ab)=(-1)^{r+s}=(-1)^r(-1)^s=\mu(a)\mu(b) 故
\mu 是积性函数。现在由唯一分解定理:
n = p_1^{\alpha_1}p_2^{\alpha_2}p_3^{\alpha_3}\cdots p_k^{\alpha_k} 根据积性:
\mu(n) = \mu(p_1^{\alpha_1})\mu(p_2^{\alpha_2}) \cdots \mu(p_k^{\alpha_k}) - 若存在
i 使得\alpha_i\ge 2 ,则\mu(p_i^{\alpha_i})=0 ,于是\mu(n)=0 ; - 若所有
\alpha_i=1 ,则每一项都是-1 ,共k 个,所以\mu(n)=(-1)^k 。
- 若存在
总结一下,莫比乌斯函数的取值:
其中,
求法
如果我们只关心单个
int mu(int x) {
if (x == 1) return 1;// 第一种情况
int cnt = 0;//这个即为 ω(n)
for (int i = 2; i * i <= x; i++) {
if (x % i == 0) {
cnt++, x /= i;
if (x % i == 0) return 0; // 第二种情况,即 n 是质数幂的倍数
}
}
if (x > 1) cnt++; // 处理剩余的大于 1 的质因子
return (cnt & 1 ? -1 : 1);//第三种情况
}
如果我们想求
const int MAXN = 1e7+5;
int tot = 0;
int p[MAXN], mu[MAXN];
bool vis[MAXN];
void get(int n) {
mu[1] = 1;
for (int i = 2; i <= n; i++) {
if (!vis[i]) p[++tot] = i, mu[i] = -1;
for (int j = 1; j <= tot && i * p[j] <= n; j++) {
vis[i*p[j]] = 1;
if (i % p[j] == 0) {
mu[i*p[j]] = 0;
break;
} else mu[i*p[j]] = -mu[i];
}
}
return;
}
和函数
继续来讨论莫比乌斯函数的和函数
-
n = 1 可得
G(1)=1 。 -
n>1 设
n = p_1^{\alpha_1}p_2^{\alpha_2}p_3^{\alpha_3}\cdots p_k^{\alpha_k} ,令n' = p_1p_2p_3\cdots p_k 。由于
\mu 在含平方因子的数处为0 ,所以G(n) = G(n') = \sum_{d \mid n'}\mu(d) 从
k 个不同质因子中选i 个的乘积作为d ,共有\binom{k}{i} 种选法,每种贡献(-1)^i ,所以G(n) = \sum_{i = 0}^k \binom{k}{i}(-1)^i 使用二项式定理:
G(n) = \sum_{i = 0}^k \binom{k}{i}(-1)^i 1^{k-i} = (-1+1)^k = 0
总结一下,莫比乌斯函数的和函数的取值:
与欧拉函数的关系
已知有下列的式子
证明:
令
则
-
当
d = p_i 时,\mu(d) = -1 ,故第二项为-\sum \frac{1}{p_i} -
当
d = p_ip_j 时,\mu(d) = 1 ,故第三项为\sum \frac{1}{p_ip_j} -
当
d = p_ip_jp_t 时,\mu(d) = -1 ,故第四项为-\sum \frac{1}{p_ip_jp_t} -
\cdots
将上面的式子全部加起来
故结论得证。
文章使用了 deepseek-v4-pro 进行润色。