当前位置: 首页 > news >正文

杜教筛学习笔记

对于数论函数 \(f\),记 \(S_f(n)=\sum_{k=1}^nf(k)\)

\(R(n)=\{\lfloor\frac{n}{d}\rfloor:d\in \mathbb{Z}^+\wedge d\le n\}\)

引理:

\[|R(n)|\le2\sqrt{n} \]

证明:\(d\le\sqrt{n}\) 的数不超过 \(\sqrt{n}\) 个。对于 \(d>\sqrt{n}\)\(\lfloor\frac{n}{d}\rfloor<\sqrt{n}\),同样不超过 \(\sqrt{n}\) 个。

\(S_f\) 为在 \(R(n)\) 中每个点上的值为 \(f\) 对于 \(n\) 的块筛。

杜教筛可以对于几类特殊数论函数,\(O(n^{\frac{3}{4}})\)\(O(n^{\frac{2}{3}})\) 地算出其块筛。

Dirichlet 乘法

\(f,g,h\) 是满足 \(f*g=h\) 的数论函数,已知 \(f,g\) 的块筛,求 \(h\) 的块筛。

\[\begin{align} S_h(n)&=\sum_{k=1}^nh(k)\\ &=\sum_{k=1}^n(f*g)(k)\\ &=\sum_{k=1}^n\sum_{d|k}f(\frac{n}{d})g(d)\\ &=\sum_{d=1}^ng(d)\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}f(k)\\ &=\sum_{d=1}^ng(d)S_f(\lfloor\frac{n}{d}\rfloor) \end{align} \]

数论分块计算,求单点是 \(O(\sqrt{n})\) 的。

\(R(n)\) 中每个点单独计算。

对于 \(d>\sqrt{n}\)\(\lfloor\frac{n}{d}\rfloor<\sqrt{n}\)。一次 \(O(n^{\frac{1}{4}})\),共 \(O(n^{\frac{3}{4}})\)

对于 \(d\le\sqrt{n}\)

\[\begin{align} \sum_{d=1}^{\lfloor\sqrt{n}\rfloor}\sqrt{\frac{n}{d}}&=\sqrt{n}\sum_{d=1}^{\lfloor{\sqrt{n}}\rfloor}d^{-\frac{1}{2}}\\ &\le\sqrt{n}\int_0^{\sqrt{n}}x^{-\frac{1}{2}}{\rm d}x\\ &=2n^{\frac{3}{4}} \end{align} \]

故块筛是 \(O(n^{\frac{3}{4}})\) 的。

Dirichlet 乘法*

很多时候可以快速求出 \(h\)\(m\) 项的值,这里假设可以 \(O(m)\) 计算 \(h\)\(m\) 项的值。

分块。对于 \(\lfloor\frac{n}{d}\rfloor\le m\) 的点预处理,其他不变。

\[\begin{align} m+\sum_{d=1}^{\lfloor\frac{n}{m}\rfloor}\sqrt{\frac{n}{d}}&=m+\sqrt{n}\sum_{d=1}^{\lfloor\frac{n}{m}\rfloor}d^{-\frac{1}{2}}\\ &\le m+\sqrt{n}\int_0^\frac{n}{m}x^{-\frac{1}{2}}{\rm d}x\\ &=m+\frac{2n}{\sqrt{m}} \end{align} \]

故取 \(m=n^{\frac{2}{3}}\) 时复杂度降为 \(O(n^{\frac{2}{3}})\)

Dirichlet “除法”

\(f,g,h\) 是满足 \(f*g=h\) 的数论函数,已知 \(g,h\) 的块筛,求 \(f\) 的块筛。

\[\begin{align} S_h(n)&=\sum_{d=1}^ng(d)S_f(\lfloor\frac{n}{d}\rfloor)\\ &=g(1)S_f(n)+\sum_{d=2}^ng(d)S_f(\lfloor\frac{n}{d}\rfloor)\\ S_f(n)&=\frac{S_h(n)-\sum_{d=2}^ng(d)S_f(\lfloor\frac{n}{d}\rfloor)}{g(1)} \end{align} \]

\(d\) 的递减序计算时,查询 \(S_f(\lfloor\frac{n}{d}\rfloor)\) 可以做到 \(O(1)\) 。其余复杂度分析同乘法部分,是 \(O(n^{\frac{3}{4}})\) 的。

Dirichlet “除法”*

假设可以 \(O(m)\) 计算 \(f\)\(m\) 项的值。取 \(m=n^{\frac{2}{3}}\),分块后可以做到 \(O(n^{\frac{2}{3}})\)

http://www.sczhlp.com/news/4308/

相关文章:

  • CF934 题解
  • 如何测试网络分区(Network Partition)场景下数据库的行为(是否符合CAP预期)?
  • 如何测试数据持久性(在各种故障后数据不丢失)?
  • 2025.8.1学习日记
  • 如何测试数据库的自我保护机制(如OOM Killer触发后的行为,连接打满后的处理)?
  • 如何设计一个有效的数据库性能测试场景?如何模拟真实的生产负载?
  • 如何定位数据库性能瓶颈?常见的瓶颈点可能在哪里?(SQL慢、锁争用、IO瓶颈、网络延迟、配置不当等)
  • 如何测试数据库在高并发、大数据量下的表现?
  • 如何验证数据库的高可用性(HA)和容灾能力(DR)?
  • 20250802 之所思 - 人生如梦
  • RoaringBitmap学习笔记
  • 数据库性能测试的关键指标
  • Git命令操作集合
  • 列表与字典
  • 字符串基础
  • 不同类型的NoSQL数据库(KV如Redis, 文档型如MongoDB, 列式如HBase/Cassandra)的核心特性、数据模型和典型应用场景
  • MongoDB的文档模型有什么特点?分片是如何工作的?MongoDB的写关注和读关注级别有哪些?
  • 解决阿里云oss托管网址绑定域名后访问提示:The bucket you access does not belong to you.
  • 【记录】用AutoAWQ对Qwen3-32B模型做int4量化
  • 大屏flexible记录
  • vue深色模式浅色模式切换思路
  • 大模型、AI Agent、AI 应用:定义、区别与关系
  • 分布式数据库高可用连接地址的实现原理,应用是如何请求到可用节点
  • CAP理论是什么?不同的NoSQL数据库通常在CAP中做怎样的取舍?最终一致性是如何实现的?
  • NoSQL分布式数据库主备节点间存在同步延迟,如何保证读一致性
  • PDF文件转换RGB颜色模式为CMYK颜色模式
  • 云数据库规格变更失败后的回滚机制应该如何测试?
  • 408-OS之重定位
  • 大冰经典语录
  • ArKTS: staic message simple