莫比乌斯反演与杜教筛

数论

狄利克雷卷积

现在有数论函数 \(f,g\) 定义两者的狄利克雷卷积为:

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

这东西有很多很好的性质:

  • 交换律:\(f * g = g * f\)
  • 结合律: \((f * g) * h = f * (g * h)\)
  • 分配律:\((f + g) * h = f * h + g * h\)

一些常见的数论函数也可以通过狄利克雷卷积来算出:

我们定义:

\[\varepsilon (x) = [x = 1] \]

\[I (x) = 1 \]

\[Id(x) = n \]

则有:

\[\varepsilon = \mu * I \]

\[\sigma_0 = I * I \]

\[\sigma_1 = Id * I \]

\[Id = I * \phi \]

\[f = f * \varepsilon \]

而莫比乌斯反演则是根据

\[\varepsilon = \mu * I \]

来推导的。

莫比乌斯反演

现在有 \(f(n) = \sum_{d | n} g(d)\),则 \(g(d) = \sum_{d | n} \mu(\frac{n}{d}) f(d)\) 为什么呢?

证明:

\[g * I = f * \mu * I = f * \varepsilon = f \]

而同样的:

\[f * \mu = g * I * \mu = g \]

所以等式成立。

周期性的字符串

我们定义 \(f(x)\) 表示长度为 \(i\) 的字符串总量,\(g(x)\) 表示最小正周期为 \(x\) 的字符串的周期种类数,则:

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

莫反一波,有:

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

答案就是 \(f(n) - g(n)\)

「NOI2010」能量采集

神仙题,发现答案相当于求:

\[\sum_i^n \sum_j^m (\gcd(i, j) \times 2 - 1) \]

重要的部分就是:

\[\sum_i^n \sum_j^m (\gcd(i, j)) \]

我们尝试化简,首先有 \(Id = I * \phi\),套进去就有:

\[\sum_i^n \sum_j^m \sum_{k|\gcd(i,j)} \phi(k) \]

然后我们不妨设 \(n \le m\)

然后交换求和顺序:

\[\sum_{k}^n \phi(k) \sum_{ik}^n \sum_{jk}^m 1 \]

化简,然后就有

\[\sum_{k}^n \phi(k) \lfloor \frac{n}{k} \rfloor \lfloor \frac{m}{k} \rfloor \]

然后就做完了,甚至可以做到 \(O(\sqrt n)\)

YY的GCD

还是先写出答案:

\[\sum_i^n \sum_j^m \sum_{k\in prime} k [\gcd(i, j) = k] \]

\[\sum_{k\in prime} k \sum_{ik}^n \sum_{jk}^m [\gcd(i, j) = 1] \]

\[\sum_{k\in prime} k \sum_{ik}^n \sum_{jk}^m \sum_{d|i,d|j} \mu(d) \]

\[\sum_{k\in prime} k \sum_{d} \mu(d) \lfloor \frac{n}{dk} \rfloor \lfloor \frac{m}{dk} \rfloor \]

\[\sum_{D} \lfloor \frac{n}{D} \rfloor \lfloor \frac{m}{D} \rfloor \sum_{k \in prime} \mu(\frac{D}{k}) \]

发现后面那个东西是好预处理的,然后整除分块,然后就做完了。

约数个数和

我们考虑 \(d(ij)\) 等于什么。

我们考虑以下这个式子:

\[d(ij) = \sum_{x | i} \sum_{y | j} [\gcd(x, y) = 1] \]

考虑以每个质数的视角来看,我们尝试构造一个双射,如果这个质数在 \(x\) 中出现,表示对应着次数等于 \(p\)\(x\) 里的出现次数,如果在 \(y\) 里出现,表示对应着次数等于 \(p\)\(i \times y\) 里的出现次数。

然后正常莫反就行了。

Crash的数字表格

直接写过程:

\[\sum_i^n\sum_j^m \text{lcm}(i, j) \]

\[\sum_i^n\sum_j^m \frac{ij}{\gcd(i, j)} \]

\[\sum_i^n\sum_j^m \sum_d^n \frac{ij}{d} [\gcd(i, j) = d] \]

\[\sum_d^n \sum_i^{\lfloor \frac{n}{d} \rfloor} \sum_j^{\lfloor \frac{m}{d} \rfloor} ijd [\gcd(i, j) = 1] \]

\[\sum_d^n d \sum_i^{\lfloor \frac{n}{d} \rfloor} \sum_j^{\lfloor \frac{m}{d} \rfloor} ij \sum_{k|i, k|j} \mu(k) \]

\[\sum_d^n d \sum_{k}^n \mu(k) k^2 \sum_i^{\lfloor \frac{n}{dk} \rfloor} \sum_j^{\lfloor \frac{m}{dk} \rfloor} ij \]

\[\sum_{D=dk}^n (\sum_i^{\lfloor \frac{n}{D} \rfloor} \sum_j^{\lfloor \frac{m}{D} \rfloor} ij) \sum d \mu(k) k^2 \]

发现后面那坨可以线性筛筛出来,然后就做完了。

「SDOI2014」数表

假如没有 \(a\) 的限制:

\[\sum_i^n \sum_j^m \sigma_1(\gcd(i,j)) \]

按照之前的套路莫反一下就有:

\[\sum_D^n \lfloor \frac{n}{D} \rfloor \lfloor \frac{m}{D} \rfloor \sum_{k|D} \sigma_1(k) \mu(\frac{D}{k}) \]

然后我们暴力求出全部的 \(\sigma_1\),并且将询问按照 \(a\) 排序,然后每次就多拓展每次新增的 \(a\),然后在暴力修改,然后用个数据结构维护单点加,区间求和就行了。

总复杂度:\(O(q \sqrt n \log n + n \log^2n)\) 难以想象,这居然能过。

杜教筛

假如说我们想快速求出数论函数的前缀和,可以尝试使用杜教筛。

假如我们要求 \(S(n) = \sum_i^n f(i)\),则我们可以先构造一个函数 \(g\),满足 \(g\)\(f*g\) 的前缀和是好做的。

那我们就有:

\[\sum_i^n (f*g)(i) = \sum_i^n \sum_{d|i} f(d) g(\frac{i}{d}) \]

对后面那个式子化简,就有:

\[\sum_i^n (f*g)(i) = \sum_i^n \sum_j^{\lfloor \frac{n}{i} \rfloor} g(i) f(j) \]

相当于:

\[\sum_i^n (f*g)(i) = \sum_i^n g(i) S(\frac{n}{i}) \]

假如我们现在想求 \(S(n)\),那么我们就可以:

\[g(1)S(n) = \sum_i^n(f * g)(i) - \sum_{i = 2}^n g(i) S(\frac{n}{i}) \]

对后面使用整除分块,然后就可以做到递归去实现。

即便 \(f\) 不是积性函数,但只要能构造出 \(g\),就可以使用杜教筛。

然后我们考虑计算复杂度。

我不会,反正能证明是 \(O(n^\frac{3}{4})\) 的,但是如果我们预处理出来 \(n^{\frac{2}{3}}\)\(S(i)\),就可以做到 \(O(n^{\frac{2}{3}})\)

function

我们先莫反预处理出来 \(f\) 前几项,然后直接杜教筛之。

Gcd and Lcm

我们考虑一个性质就是 \(f\) 是积性函数。

那么 \(f(\gcd(i, j)) f(\text{lcm}(i, j)) = f(i) f(j)\)

那么原式子就等于:

\[(\sum_i^n f(i))^2 \]

相当于求解 \(\sum_i^n f(i)\)

我们试着化简一波:

\[\sum_i^n\sum_{d|i} \mu(d)d \]

\[\sum_i^n\sum_{d|i} \mu(\frac{n}{d})\frac{n}{d} \]

\[\sum_d^n \sum_i^{\lfloor \frac{n}{d} \rfloor} \mu(i) i \]

那我们只需要求出 \(g(x) = \mu(x) x\) 的前缀和就行了,而注意到 \(g * id = \varepsilon\),直接杜教筛。

posted @ 2026-01-13 15:00  Air2011  阅读(6)  评论(0)    收藏  举报