数论函数

定义域为正整数、值域是复数的子集的函数称为数论函数。 OI 中研究的数论函数的值一般也是整数。

积性函数

定义

\(f\) 是数论函数,若对任意互质的正整数 \(a, b\),都有 \(f(ab) = f(a)f(b)\),则称 \(f\) 是积性函数。

若对任意的正整数 \(a, b\),都有 \(f(ab) = f(a)f(b)\),则称 \(f\) 是完全积性的。

求法

\(f\) 是积性函数,为求 \(f(n)\),可以对 \(n\) 分解素因子,然后计算所有的 \(f(p^α)\) 并 乘起来。

如果要对 \(1\)\(n\) 之间的所有数求出 \(f\),注意到欧拉筛的过程中可以求出每个数的最小素因子和最小素因子的幂次,利用此就能在线性时间内计算出所需的 \(f\) 的值。后面以欧拉函数为例。一般根据具体情况具体分析。

欧拉函数

\(φ(n)\) 表示 \(1 \sim n\) 中的整数中与 \(n\) 互质的数量。

性质

\(n\) 为质数,则 \(φ(n) = n - 1\)

\(φ(n) = n \cdot \prod\limits_{质数 p \ \mid \ n} (1 - \frac{1}{p})\)

\(φ(p^k) = p^{k - 1} (p - 1)\)

\(n = \sum\limits_{d / n} \varphi(d)\),证明:\(1 \sim n\)\(\gcd(i, n) = \frac{n}{d}\) 的数量为 \(\varphi(d)\)

因为欧拉函数为积性函数,所以当 \(a,b\) 为质数时,有\(φ(ab) = φ(a) \cdot φ(b)\)

求法

若只用求一个数 \(x\)\(φ\),通过质因数分解即可求。

若是多个,可以通过线性筛, 具体过程如下:

  • \(x\) 为质数,直接 \(φ(x) = x - 1\)

  • 否则,令 \(u\)\(x\) 最小质因子,则 \(φ(x) = \begin{cases} φ(i) \cdot (u - 1), i \% u > 0 \\ φ(i) \cdot u, i \% u = 0 \end{cases}, i = x / u\)。证明如下:

    • \(k\)\(x\) 互质的充要条件为 \(k\)\(i\) 互质\(u\) 互质,即从与 \(i\) 互质数中去掉为 \(u\) 倍数的,设 \(\gcd(k, i) = 1\)
    • \(i\)\(u\) 的倍数,\(\gcd(k, u) = 1\),答案为 \(φ(i) \cdot u\)
    • 否则要去掉所有与 \(u\) 互质的 \(ni\),即 \(1 \sim u\) 中与 \(u\)互质的 \(n\),共 \(φ(i)\) 个,所以答案就是 \(φ(i) \cdot (u - 1)\)。也可以根据性质,\(φ(x) = φ(i)φ(u)\)
void getphi() { 
  phi[1] = 1;
  for (int i = 2; i < MAXV; i++) {
	if (!vis[i]) {
		p[++m] = i, phi[i] = i - 1;
	}
	for (int j = 1; j <= m && 1ll * p[j] * i < MAXV; j++) {
		phi[i * p[j]] = phi[i] * p[j], vis[i * p[j]] = 1;
		if (i % p[j] == 0) break;
		phi[i * p[j]] -= phi[i];
	}
  }
}

其他函数

单位函数

\(\epsilon(n) = \begin{cases} 1, n = 1 \\ 0, n\ne 1 \end{cases}\),为完全积性函数。

除数函数

\(\sigma_k(n)\):除数函数,用来表示 \(n\) 的因子的 \(k\) 次方之和,\(\sigma_k(n) = \sum\limits_{d / n}d^k\)

约数个数 \(\sigma_0(n)\) 常记为 \(d(n)\),约数和 \(\sigma_1(n)\) 常记为 \(\sigma(n)\)。 除数函数都是积性函数。

小性质:\(d(ij) = \sum\limits_{x | i}\sum\limits_{y|j} [gcd(x, y) == 1]\)

常函数

\(1\) 表示取值恒为 \(1\) 的常函数。

幂函数

\(Id_k(n) = n^k, Id = Id_1\)

狄利克雷卷积(Dirichlet 卷积)

\(f, g\) 为数论函数,考虑数论函数 \(h\) 满足:\(h(n) = \sum\limits_{d / n} f(d) \cdot g(\frac{n}{d})\)。则称 \(h\)\(f\)\(g\) 的 Dirichlet 卷积,记作 \(h = f * g\)

Dirichlet 卷积满足交换律和结合律。

性质

\(f, g\) 为积性函数,则 \(f * g\) 也为积性函数。

\(\epsilon * f = f\)

\(\varphi * 1 = Id\)(欧拉函数性质)。

\(\mu * 1 = \epsilon\)(莫比乌斯函数的性质)。

\(\mu * Id = \varphi\),证明:\(\mu * Id = \mu * (\varphi * 1) = \mu * 1 * \varphi = \epsilon * \varphi = \varphi\)

计算

若只计算 \(h(n)\),需枚举 \(n\) 的所有约数,时间复杂度:\(O(\sqrt n)\)

若要计算 \(h(1) \sim h(n)\),可以枚举 \(1 \sim n\) 每个数的倍数,时间复杂度:\(O(n \log n)\)

Mobius 反演

我有很多想说的,但这里太小了,写不下

posted @ 2025-07-16 15:07  xiehanrui0817  阅读(28)  评论(0)    收藏  举报