数论 - 筛法相关

埃氏筛

调和级数暴力枚举倍数。

应用:求给定数中 \(i\) 的因子个数(Dirichlet 前缀和),详见 容斥反演篇。

欧拉筛

  • 优化:只筛 6k-1,6k+1
  • https://www.luogu.com.cn/blog/310801/xiao-mo-xian-zhu-yi-0-post
  • 对于所有 \(i\) 进行筛法枚举质数 \(j\) 时只枚举到 \(i\) 的最小质因子。
  • 分类讨论:
    • \(i\) 含有最小质因子 \(j\)\(i\times j\) 也含有最小质因子 \(j\)
    • \(i\) 不含最小质因子 \(j\)\(i\times j\) 含有最小质因子 \(j\)
    • 对两种情况分别更新。
  • 可以筛 \(\mu,\varphi\)、最小约数、约数个数、约数和 等积性函数。
  • 扩展到任意积性函数,只要可以 O(1) 求 \(f(p^k)\) 即可。

线性筛 \(n^n\)

\(n^n\) 可以在线性内预处理,我们套用线性筛的流程:

  • 对于素数暴力快速幂,这一部分复杂度为 \(\Theta(\dfrac{n}{\ln n}\ln n)\)
    对于合数 \(i=pq\)\(p\) 是一 小于根号 的素数,而 \(q\) 是在外层枚举的任意数,我们尝试计算 \((p^p)^q(q^q)^p\),前者使用光速幂 \(\Theta(\sqrt n)\) 预处理 \(\Theta(1)\) 查询,后者即依次求出 \(C^{p_1},C^{p_2},\cdots\)\(p_i-p_{i-1}\) 是 prime gap,其为 \(\Theta(\ln n)\) 级别,暴力预处理这一级别的幂次,那么复杂度为 \(\Theta(\sqrt n\times \sqrt n+\sum_q\ln \dfrac{n}{q})=\Theta(n)\)
posted @ 2023-09-28 12:48  Network_Error  阅读(14)  评论(0)    收藏  举报