简介
莫比乌斯反演是数论上的一种处理技巧。对于一些函数 (f(n)),如果很难直接求出它的值,而容易求出倍数和或约数和 (F(n)),那么可以通过莫比乌斯反演来求得 (f(n)) 的值。
备注:在本文中,是用 ([A]) 表示 (A) 命题的真值表达,(A) 为真则为 (1),否则为 (0)。
莫比乌斯函数
定义
设 (n=p_1^{q_1}cdot p_2^{q_2}cdots p_k^{q_k}),其中 (p) 为素数,则定义莫比乌斯函数 (mu(n)) 如下:
通俗的来讲,莫比乌斯函数的定义如下:
- 莫比乌斯函数 (mu(n))的定义域是(N)
- (mu(1)=1)
- 当n存在平方因子时,(mu(n)=0)
- 当n是素数或奇数个不同素数之积时,(mu(n)=-1)
- 当n是偶数个不同素数之积时,(mu(n)=1)
性质
性质一:莫比乌斯函数是积性函数。
应用:根据这一性质,可以使用线性筛,在 (O(n)) 的时间预处理出所有 ([1,n]) 内的 (mu) 值。
void sieve() {
fill(prime, prime + maxn, 1);
mu[1] = 1, tot = 0;
for (int i = 2; i < maxn; i++) {
if (prime[i]) {
prime[++tot] = i, mu[i] = -1;
}
for (int j = 1; j <= tot && i * prime[j] < maxn; j++) {
prime[i * prime[j]] = 0;
if (i % prime[j] == 0) {
mu[i * prime[j]] = 0;
break;
} else {
mu[i * prime[j]] = -mu[i];
}
}
}
}
补充:在数论上积性函数的定义。
设 (f(n)) 为一个定义在 (N_+) 上的函数。若对于任意 ((x,y)=1) 有 (f(xcdot y)=f(x)f(y)), 则称 (f(n)) 为一个积性函数;若对于任意 (x) 和 (y) 均有 (f(xcdot y)=f(x)f(y)),则称 (f(n)) 为一个 完全积性函数
性质二:
证明:
当 (n=1) 时显然。
当 (n eq 1) 时,设 (n=p_1^{q_1}cdot p_2^{q_2}cdots p_m^{q_m})。
在 (n) 的所有因子中,(mu) 值不为 (0) 的只有所有质因子次数都为 (1) 的因子,其中质因子个数为 (r) 个的有 (C_k^r) 个。
那么显然有:(displaystyle sum_{d|n}mu(d)=C_k^0-C_k^1+C_k^2+cdots+(-1)^kC_k^k=sum_{i=0}^k(-1)^iC_k^i)。
由二项式定理知 (displaystyle (x+y)^n=sum_{i=0}^nC_n^ix^iy^{n-i})。令 (x=-1,y=1),代入即可得证。
莫比乌斯反演
形式一:
证明
最后一步时根据莫比乌斯函数的性质二,可得当且仅当 (k=n) 时和式的值为 (f(n)),否则为 (0)。
形式二:
应用:
容斥原理,数论,杜教筛。