Loading

【进阶】数论函数求和(理论)

下面默认所有数论函数都是积性函数。

无穷元多项式

对于积性函数 \(f\),我们设计一个无穷元生成函数 \(A(x_1,x_2,...)\),其中 \(x_i\) 的次数对应第 \(i\) 个质数 \(p_i\) 的次数 \(c_i\)

可以写出:

\[\begin{aligned} A(x_1,x_2,x_3,...) &= \sum_{\{c_1,c_2,...\}} f(p_1^{c_1}p_2^{c_2}p_3^{c_3}...)x_1^{c_1}x_2^{c_2}x_3^{c_3}... \\ &= \left(\sum_{c_1}f(p_1^{c_1})x_1^{c_1} \right) \left(\sum_{c_2}f(p_2^{c_2})x_2^{c_2} \right) \left(\sum_{c_3}f(p_3^{c_3})x_3^{c_3} \right)... \end{aligned}\]

容易得知该生成函数是每个元对应的一元生成函数的总乘积。

  • 贝尔级数:对于每个元 \(x\),我们定义 \(F(x)\) 为该元的一元生成函数,那么 \(F(x)\) 称为贝尔级数。
    常见积性函数的贝尔级数:

    • \(I\xrightarrow{\text{B.S.}} 1+x+x^2+... = \dfrac 1 {1 - x}\)
    • \(\varepsilon \xrightarrow{\text{B.S.}} 1\)
    • \(Id_k \xrightarrow{\text{B.S.}} 1 + p^kx + p^{2k}x^2 + p^{3k}x^3 + ... = \dfrac 1 {1 - p^kx}\)
    • \(\mu \xrightarrow{\text{B.S.}} 1 - x\)
    • \(\varphi \xrightarrow{\text{B.S.}} 1 + (p - 1)\sum\limits_{i = 1}p^{i - 1}x^i = 1 + \dfrac {(p - 1)x}{1 - px}\)
    • \(d \xrightarrow{\text{B.S.}} 1 + 2x + 3x^2 + 4x^3 = \dfrac 1 {(1 - x) ^ 2}\)
    • \(\sigma_k \xrightarrow{\text{B.S.}} \sum\limits_{i = 0} x^i \sum\limits_{j = 0} ^ i p^{jk} = \dfrac 1 {(1 - x)(1 - p^kx)}\)

这也证实了 \(\mu * I = \varepsilon\) 以及其他关系。

高维变换

将每个多项式的元作为一个维度,那么有无穷个维度。对于给定的 \(n\),设 \(p_k\)\(n\) 以内最大的质数,那么我们保留前 \(k\) 维。

和 FWT 几乎一模一样,我们可以对其进行高维前缀和/后缀和,或者做差分。

  • \(\gcd\) 的本质:设两个数 \(a,b\) 在每个质因子处的次数分别为 \(\{a_1,a_2,...,a_k\}\)\(\{b_1,b_2,...,b_k\}\),那么 \(\gcd(a,b)\) 的次数为 \(\{\min(a_1,b_1),\min(a_2,b_2),...,\min(a_k,b_k)\}\)

  • \(\text{lcm}\) 的本质:设两个数 \(a,b\) 在每个质因子处的次数分别为 \(\{a_1,a_2,...,a_k\}\)\(\{b_1,b_2,...,b_k\}\),那么 \(\text{lcm}(a,b)\) 的次数为 \(\{\max(a_1,b_1),\max(a_2,b_2),...,\max(a_k,b_k)\}\)

  • 莫比乌斯反演的本质:莫比乌斯反演其实是对高维数组进行差分,差分的方式是容斥。

所以,我们做一些莫比乌斯反演题目,可能完全不需要求莫比乌斯函数!利用 FWT 高维差分方式,同样可以实现莫反的效果,而且时间复杂度降到 \(O(n\log\log n)\)

  • 莫反问题的本质:莫反的本质是高位变换,变换求的其实就是 \(\gcd\) 卷积,这样我们可以直接用 FWT 中 and 卷积的方法——先做一遍高位后缀和,然后再差分回去。

Powerful Number

  • 定义:不存在次数为 \(1\) 的质因子的正整数,下面简称 PN。
    由此可以得到 PN 的表示方式:\(a^2b^3\),其中 \(b\) 不存在平方因子,这构成单射。

PN 有一个十分优秀的性质:\(n\) 以内 PN 的数量为 \(O(\sqrt n)\)

证明 PN 可表示为 $a^2b^3$,可得 $b\le \sqrt[3]{\dfrac n{a^2}}$ $$\begin{aligned} O(\sum_{a = 1}^{\sqrt n} \left(\frac n{a^2}\right)^{\frac 13}) &= O(n^{\frac 13} \sum_{a = 1}^{\sqrt n} a^{-\frac 23}) \\ &= O(n^{\frac 13} \cdot n^{\frac 16}) \\ &= O(\sqrt n) \end{aligned}$$
  • 质数拟合:对于积性函数 \(f\),我们构造一个积性函数 \(g\),满足在每个质数 \(p\) 处都有 \(f(p)=g(p)\),但对于 \(k\ge 2\) 不一定满足 \(f(p^k)=g(p^k)\)

考虑此时我们需要求 \(S_f(n)\),我们可以拟合一个 \(g\),并且 \(g\) 的块筛是可求的。设 \(f = g * h\),则

\[S_f(n) = \sum_{i = 1}^n h(i) S_g(\lfloor\frac ni \rfloor) \]

现在的任务是求出 \(h\)。注意到对于每个质数 \(p\),都有 \(f(p) = g(p)h(1) + g(1)h(p) = g(p) + h(p)\),而又知 \(f(p) = g(p)\) 可得 \(h(p)\)

由于 \(f,g\) 都是积性函数,所以 \(h\) 也是积性函数,这说明当 \(i\) 中存在 \(1\) 次质因子时,\(h(i) = 0\),那么 \(h\) 只有在 PN 处有值!

所以我们可以爆搜找出 \(n\) 以内的所有 PN 并按质因子分开计算出对应的 \(h\) 值,这部分时间复杂度为 \(O(\sqrt n)\)

\(S_g\) 需要利用杜教筛求出,时间复杂度为 \(O(n^{\frac 23})\)

posted @ 2024-08-03 19:50  Lgx_Q  阅读(36)  评论(0编辑  收藏  举报