定义
积性函数 指对于 任意互质的整数 $a$ 和 $b$ 有性质 $f(ab)=f(a)\times f(b)$ 的数论函数。
完全积性函数 指对于 任意整数 $a$ 和 $b$ 有性质 $f(ab)=f(a)\times f(b)$ 的数论函数。
很显然 完全积性函数 是 积性函数 的一个子集。
积性函数
欧拉函数
定义:
欧拉函数,属于 积性函数,但不是完全积性函数。常用 $\varphi$ 表示,读作 fai 。
$\varphi(n)$ 定义为小于等于 $n$ 的正整数中与 $n$ 互质的数的个数。
公式:
若 $p_1 , p_2 ,\ldots, p_m$ 为 $x$ 的所有 互不相同 的质因数,$n$ 是一个不为 $0$ 的整数,则
性质 & 证明:
性质 1:
若 $n , m$ 互质,则 $\varphi(nm)=\varphi(n) \times \varphi(m)$ 。
证明:
积性函数特有性质。
性质 2:
若 $n$ 为 质数,则 $\varphi(n)=n-1$ 。
证明:
所有小于 $n$ 的正整数都与 $n$ 互质,一共 $n - 1$ 个。
性质 3:
若 $n$ 为 奇数,则 $\varphi(2n)=\varphi(n)$ 。
证明:
显然 $n$ 与 $2$ 互质,且 $\varphi(2) = 1$,所以根据 性质 1,可得
性质 4:
若 $p$ 为质数,$n = p^k$,则
证明:
由 $n=p^k$,得 $n$ 的质因数只有 $p$,再通过公式,可知
性质 5:
若 $n > 2$,则 $\varphi(n)$ 为偶数。
若 $n > 1$,则小于等于 $n$ 且与 $n$ 互质的数的和为
证明:
首先需要知道:若 $n$ 与 $m$ 互质 $(n > m)$,则 $n$ 与 $n - m$ 互质。
显然与 $n$ 互质的数都是成对出现的,且相加的和为 $n$,只有在 $\gcd(n,\frac{n}{2})=1$ 时例外,但这种情况只会在 $n \leq 2$ 时出现,所以 $\varphi(n)\ (n > 2)$ 为偶数得证。小于等于 $n$ 的数中,与 $n$ 互质的数的个数为 $\varphi(n)$,所以一共有 $\frac{\varphi(n)}{2}$ 对,总和为 $\frac{n \times \varphi(n)}{2}$。
性质 6:
若正整数 $x$ 与质数 $p$ 不互质
程序:
如何求出 $\varphi(n)$ ?
根据欧拉函数的公式我们能够得到以下代码:
1 | inline int getPhi(int n) { |
在最坏情况下($n$ 是质数),该代码的时间复杂度为 $O(n)$,这显然不够优秀,考虑如何优化。
任何一个整数 $n$ 都不可能存在 $2$ 个大于 $\sqrt n$ 的质因子,所以我们枚举因数时只需要遍历到 $O(\sqrt n)$ 即可,如果将小于 $\sqrt n$ 的质因子除完后,剩下的数不为 $1$,说明还有 $1$ 个大于 $\sqrt n$ 的质因子,最后要算进去。这种做法的时间复杂度为 $O(\sqrt n)$ 。
求一个数的欧拉函数值:
1 | inline int getPhi(int n) { |
如果需要求 $\varphi(1)\sim \varphi(n)$ 的值,用上述方法逐个求的时间复杂度为 $O(n\sqrt n)$,有没有更快的做法呢?
线性筛求欧拉函数:
1 | inline void getPhi(int n) { |
莫比乌斯函数
定义:
莫比乌斯函数,属于 积性函数,但不是完全积性函数。常用 $\mu$ 表示,读作 miu 。
莫比乌斯函数的定义域是全体自然数 $n$ 。
若 $n = 1$,则 $\mu(1)=1$;
若 $n$ 存在大于 $1$ 的平方因子,则 $\mu(n)=0$(平方因子即 $4 , 9 , 25$ 等);
若 $n$ 是偶数个互不相同的质数之积,则 $\mu(n)=1$;
若 $n$ 是奇数个互不相同的质数之积,则 $\mu(n)=-1$ 。
公式:
性质 & 证明:
性质 1:
若 $n , m$ 互质,则 $\mu(nm)=\mu(n) \times \mu(m)$ 。
证明:
积性函数特有性质。
性质 2:
若 $n \neq 1$,则 $n$ 所有因子的莫比乌斯函数值的和为 $0$,即
证明:
除数函数
定义:
除数函数,属于 积性函数,但不是完全积性函数。常用 $\sigma$ 表示,读作 sigma 。
$\sigma_x(n)$ 定义为 $n$ 的正约数的 $x$ 次幂之和,即
公式:
若 $p_1 , p_2 ,\ldots, p_m$ 为 $x$ 的所有质因数,$n$ 和 $x$ 都是 自然数 。
性质 & 证明:
性质 1:
特殊地,$\sigma_0(n)$ 可以表示 $n$ 的正约数个数,$\sigma_1(n)$ 可以表示 $n$ 的正约数之和。
证明:
根据定义即能得到该结论。
性质 2:
若 $n , m$ 互质,且 $x$ 是自然数,则 $\sigma_x(nm)=\sigma_x(n) \times \sigma_x(m)$ 。
证明:
积性函数特有性质。