学习笔记:从 「1」开始的数论!「2020落谷夏令营基础省选」

前置(?)学习笔记:简单数论

基础知识

互质

\(gcd(a, b) = 1\) 又称 \(a ⊥ b\),互质抽象理解为代数意义上的垂直(神奇

范围内数的倍数

\([1, n]\) 中,\(d\) 的倍数有 \(\lfloor \frac{n}{d} \rfloor\) 个。

这个比较显然,\(1, d, 2 \times d, ..., k \times d\),最大的 \(k \times d \le n\) ,即 \(k = \lfloor \frac{n}{d} \rfloor\)

整除叠加性质

对于任意 \(x\) 与正整数 \(a, b\),都有:

\(\lfloor \dfrac{\lfloor \dfrac{x}{a} \rfloor }{b} \rfloor = \lfloor \dfrac{x}{ab} \rfloor\)


自己想的奇怪的证明,把数 \(n\) 拆成 \(n = qk + r\) 的形式,其中 \(k\) 为整数, \(0 \le r < q\),那么 \(\lfloor \frac{n}{q} \rfloor = k\)

拆左边,\(x = ac + d = a(be + f) + d = abe + af + d\)

拆右边,\(x = aby + z\)

\(∵ e, y\) 是整数,\(0 \le z < ab\),且 \(z\) 是唯一的,故只需证明 \(0 \le af + d < ab\),即可得到 \(y = e\)

由余数的性质,有 \(af + d < af + a < a(f+1) <= ab\)

证毕


数论函数

数论函数

定义域为正整数,值域是复数的子集的函数称为数论函数。

\(\text{OI}\) 中,值域一般也是整数域。

常函数

\(1\) 表示不管输入什么,取值恒为 \(1\) 的常函数。

幂函数

  • \(\text{Id}_k(n) = n^k\)
  • \(\text{Id} = \text{Id}_1\)

积性函数

  • 若对于任意互质的正整数 \(a, b\),满足 \(f(ab) = f(a) \times f(b)\),则 \(f\) 为积性函数。
  • 若对于任意正整数 \(a,b\),满足 \(f(ab) = f(a) \times f(b)\),则 \(f\) 为完全积性函数。

研究方法

算数基本定理将 \(n\) 分解:\(n=p_1^{c_1}p_2^{c_2}...p_s^{c_s}\) (以后函数的唯一分解都是这个性质),则有

\(f(n) = f(p_1^{c_1})\times f(p_2^{c_2}) \times ...\times f(p_s^{c_s})\)

研究积性函数 \(f\),可以转化为研究 \(f(p^c)\),即 \(f\) 在素数与素数幂的取值。

求值

  • 算一个,可以 \(O(\sqrt n)\) 分解质因数,乘起来

  • 算出 \([1, n]\) 所有的 \(f\) ,可以欧拉筛,求出每个数最小质因子与最小质因子幂次,利用这个可以线性算。

单位函数

$ε(n) = [n = 1] $

  • \([\text{condition}]\) 表述当条件 \(\text{condition}\) 成立时取值为 \(1\),否则为 \(0\) 的函数。

  • 单位函数是完全积性函数*

除数函数

\(σ_k(n)\) 表示 \(n\) 的所有因子的 \(k\) 次方之和,即

\[σ_k(n) = \displaystyle\sum_{d|n} d^k \]

  • 特别的,约数个数 \(σ_0(n)\) 又称 \(d(n)\),约数和 \(σ_1(n)\) 又称 \(σ(n)\)
  • 除数函数都是积性函数(这个比较显然,每个质因子贡献独立,唯一分解后 \(σ_k(n) = \displaystyle\prod_{1 \le i \le s} 1 + p_i^k + p_i^{2k} + ...+p_i^{ck}\)

神奇的式子

\(\displaystyle\sum_{x=1}^n \lfloor \frac{n}{x} \rfloor = \displaystyle\sum_{x=1}^n d(x)\)

两者本质上都是 \((i, j)\) 二元组,满足 \(i \times j \le n\) 的个数。

  • 其中第一个式子映射为 \(\lfloor \frac{n}{x} \rfloor \Rightarrow (1, x), (2, x),...,(\lfloor \frac{n}{x} \rfloor ,x)\)
  • 第二个式子的映射:\(d(x) \Rightarrow (k, \frac{x}{k})\)(其中 \(k\)\(x\) 的因子)

欧拉函数

欧拉函数(Euler's totient function) \(\varphi(n)\) 表示不超过 \(n\) 且与 \(n\) 互质的正整数的个数。

算数基本定理 \(+\) 容斥原理(总共 \(n\) 个数,我们减掉每个质因子的倍数:\(\frac{n}{p_i}\),减重复了,加上 \(\frac{n}{p_ip_j}\) 如是一直套娃...)可以得到表达式:

\[\varphi(n) = n · \displaystyle\prod_{i=1}^{s}(1 - \frac{1}{p_i}) \]

  • 通过表达式,可得欧拉函数是积性函数

性质

对于任意 \(n\),都有

\[n = \displaystyle \sum_{d|n} \varphi(d) \]


证明

考虑 \(1 \le i \le n\) 所有产生的 \(\text{gcd}(n, i) = d\),考虑枚举所有的 \(d | n\),等式两边同除 \(d\)\(\text{gcd}(\frac{n}{d}, \frac{i}{d}) = 1\),故对于 \(d\) 而言,对应 \(i\) 的个数有 \(\varphi(\frac{n}{d})\) 个。

我们考虑了所有 \(d\),也就考虑了 \([1, n]\)\(n\) 个整数,故:

\[n = \displaystyle \sum_{d|n} \varphi(\frac{n}{d}) = \displaystyle\sum_{d|n} \varphi(d) \]


算法

\(O(n)\) 欧拉筛 \(\varphi\)\(n\) 项:

phi[1] = 1;
for (int i = 2; i <= n; i++) {
    if(!st[i]) primes[++tot] = i, phi[i] = i - 1;
    for (int j = 1; i * primes[j] <= n; j++) {
        st[i * primes[j]] = true;
        if(i % primes[j] == 0) {
            phi[i * primes[j]] = phi[i] * primes[j];
            break;
        }
        phi[i * primes[j]] = phi[i] * (primes[j] - 1);
    }
}

莫比乌斯函数

莫比乌斯函数(Mobius function)函数 \(\mu(n)\) 定义为:

\[\mu(n) = \begin{cases} 1, n = 1; \\ (-1)^s, n = p_1p_2...p_s \\ 0, 其他情况 \end{cases} \]

\(p_1,...,p_s\) 为不同素数,通俗来说,就是 \(n\)\(1\) 的情况,将其唯一分解,如果有一项的 \(c_i > 1\),函数值为 \(0\),否则为 \(-1\)\(s\) (约数个数)次方(即正负迭代)。换句话说,仅当 \(n\) 非平方因子时, \(\mu(n) \not=0\)

  • 枚举各种情况,可知 \(\mu\)积性函数

性质

\[\epsilon(n) = \displaystyle\sum_{d|n} \mu(d) \]

证明

\(n = 1\) 时成立。

\(n \not=1\) 时,将 \(n\) 唯一分解,我们只考虑非平方因子的约数,因为只有他 \(\mu\) 存在加和贡献。

\[\displaystyle\sum_{d|n} \mu(d) = \displaystyle\sum_{k=0}^s (-1)^k · C_s^k = (1 - 1)^s = 0 \]

该式子前面是组合数选有贡献的 \(d\),后面用到了二项式定理。

算法

\(O(n \log \log n)\)\(\mu\) 的前 \(n\) 项:

for (int i = 1; i <= n; i++) miu[i] = 1;
for (int i = 2; i <= n; i++) {
    if (!st[i]) {
        miu[i] = -1;
        for (int j = 2 * i; j <= n; j += i) {
            st[j] = true;
            if ((j / i) % i == 0) miu[j] = 0;
            else miu[j] = -miu[j];
        }
    }
}

狄利克雷卷积

对于三个数论函数 \(f, g, h\),若满足:

\[h(n) = \displaystyle\sum_{d|n} f(n) \times g(\frac{n}{d}) \]

则称 \(h\)\(f\)\(g\) 的狄利克雷卷积(Dirichlet Product),数学符号可记为 \(h = f * g\)

性质

  • 单位函数 \(\epsilon\) 是狄利克雷卷积的单位元,对于任意函数都满足 \(f = f * \epsilon = \epsilon * f\),这个展开表达式非常显然。
  • 狄利克雷卷积满足交换律和结合律(因为本质是枚举多元组,使其乘积为定值,各项相乘)。
  • \(f, g\) 是积性函数,那么 \(f * g\) 也是积性函数(展开表达式可证明)。

计算

  • 计算单个 \(h(n)\) ,要枚举约数
  • 计算 \(h\)\(n\) 项,可以枚举 \([1, n]\) 每个数的倍数,复杂度是调和级数 \(O(n\log n)\)

函数关系用狄利克雷卷积表示

很多函数关系性质都可以用狄利克雷卷积的关系来表示。

  • 除数函数和幂函数的关系:\(σ_k = 1 * \text{Id}_k\)
  • 欧拉函数与幂函数的关系:\(\text{Id} = 1 * \varphi\)
  • 莫比乌斯函数与单位函数的关系:\(\epsilon = 1 * \mu\)

应用

在求和式子中,通过以上卷积关系式,等价替换,调换求和顺序,倍数约数反向枚举等技巧,最终神奇地做到降低时间复杂度(太神奇了!)

莫比乌斯变换

\(f\) 是数论函数,若函数 \(g\) 满足:

\[g(n) = \displaystyle\sum_{d|n}f(d) \]

则称 \(g\)\(f\) 的莫比乌斯变换(Mobius transformation),\(f\)\(g\) 的莫比乌斯逆变换。

  • 可以用狄利克雷卷积形式表示,即 \(g = f * 1\)

莫比乌斯反演定理

\(g\)\(f\) 的莫比乌斯变换,则满足:

\[f(n) = \displaystyle\sum_{d|n}g(d)\mu(\frac{n}{d}) \]

也可以写成狄利克雷卷积形式:\(f = g * \mu\)

证明

用狄利克雷卷积的形式证明更加快捷:

\(∵ g = f * 1, \epsilon = 1 * \mu\)

\(∴ f = f * \epsilon = f * 1 * \mu = g * \mu\)

无平方因子数

\(n\) 以内的无平方因子数的个数,即:

\[\\\ \displaystyle\sum_{k=1}^n \mu^2(k) \]

尝试时间复杂度更优的方式,用推导欧拉函数表达式类似的方法,可得:

\[\\\ \displaystyle\sum_{k=1}^n \mu^2(k) = \displaystyle\sum_{d=1}^{\sqrt n} \mu(d) \lfloor \dfrac{n}{d^2} \rfloor \]

  • 莫比乌斯反演可以感性理解为一种整除关系的容斥

数论函数求和

杜教筛

咕咕咕,太难了,不会微积分,复杂度不会分析。

等待更新。

杂项

等待更新。

posted @ 2020-07-29 01:32  DMoRanSky  阅读(380)  评论(0编辑  收藏  举报