[模板] 数论题的一些经验

数论题多为一些求和/求值的题目, 多数可以通过莫比乌斯反演/筛法/恒等式等方法来解决.

下面是一些人生经验.

\(\epsilon(n) = [n=1]\), \(I(n) = 1\), \(id(n) = n\), \(S(n) = \sum_{i=1}^n i = \frac{n(n+1)}2\).

  1. 基本的点积/卷积:

    • \(f * \epsilon = f \cdot I = f\)
    • \(I * I = d\)
    • \(id * id = id \cdot d\)
    • \((f \cdot id) * id = id \cdot (f * I)\)
  2. 卷积的性质: [1]1

    • 交换律, 结合律, 对加法分配律
    • 完全积性函数, 点积对卷积有分配律:
      \(f\) 完全积性 (如 \(id\), \(I\)), 那么有 \(f \cdot (g * h) = (g \cdot f) * (h \cdot f)\)
    • 逆运算:
      • 对于数论函数 \(f\)\(f(1) \not= 0\), 存在 \(g\) 为其逆函数, 即 \(f * g = \epsilon\);
      • 特别的, \(\mu * I = \epsilon\), 即 \(\mu\)\(I\) 的逆函数
  3. 关于函数的积性

    • 积性函数的卷积是积性函数.
    • 积性函数 \(f(x)\), \(g(x)\).
      \(A(x) = f \cdot g = f(x)g(x)\) 是积性函数,
      \(B(x) = (f \cdot g) * 1 = \sum_{i|x} f(i)g(i)\) 也为积性函数.
  4. 有关 \(\phi\)\(\mu\)

    • \(\phi * I = id\) (替换n)
    • \(\mu * I = \epsilon\) (替换[n=1])
    • \(\mu * id = \phi\) (一般用到这个公式的时候都说明做麻烦了)
    • \((\phi \cdot id^k) * id^k = id^{k+1} \quad (\forall k \ge 0)\)
    • \((\mu \cdot id^k) * id^k = \epsilon \quad (\forall k \ge 0)\)
    • \(P_s(v)\) 表示 \(v\) 的质因子集合, 则若 \(P_s(a) \supseteq P_s(b)\), 有 \(\phi(ab) = \phi(a) * b\)
      • \(\phi (i^k) = i^{k-1} \phi(i)\)
    • \(\sigma=\sigma*\epsilon=(I*id)*(I*\mu)=(I*I)*(id*\mu)=d*\phi\)
      • \(\sigma\) 为约数和函数, 即 \(\sigma = id * I\)
  5. 求值方法:

    • 正常方法(莫反/筛法)
    • 调和级数\(O(n \log n)\)
    • \(\sum_{i=1}^n \frac n{i^2} = O(\frac{\pi^2}6 \cdot n) \sim O(n)\)
    • 积性函数筛(\(O(n)\))/单点求值(\(O(\log n * T)\))
    • 关于卷积 \(h = f*g\) 的线性筛: [2]2
      • 形式化的, 有

      \[h(n) = \begin{cases} 1 & \text{if} & n = 1 \\ \sum_{d=0}^{k} f(p^d) g(p^{k-d}) & \text{if} & n = p^k \\ h(p^k)h(m) & \text{else let} & n = p^k m & \text{where} & \gcd(p^k, m) = 1 \end{cases} \]

      • 对于第二部分, 可以 \(O(k)\) 暴力维护.
      • [2] 中证明了这样的总时间复杂度为 \(O(n)\).
  6. \[\sum_{i=1}^n i \cdot [(i,n)=1] = \frac{\phi(n)*n+\epsilon(n)}2 = \begin{cases} 1 & (n=1) \\ \frac{\phi(n)*n}2 & (n>1) \end{cases} \]

  7. \(n=\prod_{i=1}^k p_i^{\alpha_i}\), 有

    \[\sum_{d|n} \mu (d) \cdot d = \prod_{i=1}^k (1-p_i) \]

  8. (约数个数和)

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

  9. (约数研究)

    \[\sum_{i=1}^n \left[ \frac{n}{i} \right] = \sum_{i=1}^n d(i) \]

  10. (luogu4902 乘积)
    \(a_i = \left[ \frac{n}{i} \right]\). 若 \(x \rightarrow (x + 1)\), 那么

    \[a_i' = \begin{cases} a_i & (i \nmid (x+1)) \\ a_i + 1 & (i \mid (x+1)) \end{cases} \]

  11. 有关约数的复杂度

    \[\sum_{i=1}^n d(i) = O(n\log n) \]

    (调和级数)

    \[\sum_{i=1}^n d^2(i) = O(n\log^3 n) \]

    (据 hihocoder #1867: GCD; 不会证)

  12. 其他的复杂度

    • \(n \le 10^8\), \(d(n) \le 800\)
    • \(n \le 10^{18}\), \(d(n) \le 10^5\)
    • \(n \le 10^{8}\), \(\sum_{i=1}^n \phi(n) \le 4*10^{14}\)

参考资料

  1. Möbius inversion and Dirichlet convolution = Snakes
  2. 复杂度分析:积性函数的狄利克雷卷积 - 知乎

  1. [1] ↩︎

  2. [2] ↩︎

posted @ 2019-02-11 17:47  Ubospica  阅读(371)  评论(0编辑  收藏  举报