「学习笔记」整除(数论)分块

数论分块

对于一个包含 \(\left \lfloor \dfrac{n}{i} \right\rfloor\) 的求和式子,如:

\[\sum_{i = 1} ^ {n} \left \lfloor \dfrac{n}{i} \right\rfloor \]

会出现许多 \(\left \lfloor \dfrac{n}{i} \right\rfloor = \left \lfloor \dfrac{n}{j} \right\rfloor = x (i \neq j)\) 的情况。

我们要对于每一个 \(x\) 找到一个最大的 \(j\) 使得\(\left \lfloor \dfrac{n}{i} \right\rfloor = \left \lfloor \dfrac{n}{j} \right\rfloor = x\)

这个 \(j\) 就等于 \(\left \lfloor \dfrac{n}{\left \lfloor \dfrac{n}{i} \right\rfloor} \right\rfloor\)

证明

对于 \(\left \lfloor \dfrac{n}{i} \right\rfloor = \left \lfloor \dfrac{n}{j} \right\rfloor (i < j)\) 有:

\(\begin{cases}\left \lfloor\dfrac{n}{i}\right\rfloor\leq \dfrac{n}{j} = \left \lfloor \dfrac{n}{j} \right\rfloor + r (0\leq r < 1) \\ \dfrac{n}{j + 1} < \left \lfloor \dfrac{n}{i} \right\rfloor\end{cases}\)

\(\left \lfloor\dfrac{n}{i}\right\rfloor\leq \dfrac{n}{j} \Rightarrow j \leq \dfrac{n}{\left \lfloor \dfrac{n}{i} \right\rfloor}\)

\(\dfrac{n}{j + 1} < \left \lfloor \dfrac{n}{i} \right\rfloor \Rightarrow \dfrac{n}{\left \lfloor \dfrac{n}{i} \right\rfloor} < j + 1\)

综上所述:\(j \leq \dfrac{n}{\left \lfloor \dfrac{n}{i} \right \rfloor} < j + 1\)

\(\because j \in \mathbb N_{+} \ \therefore j = \left \lfloor \dfrac{n}{\left \lfloor \dfrac{n}{i} \right\rfloor} \right\rfloor\)

复杂度分析

\(\forall n \in \mathbb N_{+}, \left | \left\{ \left\lfloor\dfrac{n}{d} \right\rfloor\mid d \in \mathbb N_{+},d \leq n \right\}\right| \leq 2\sqrt n\)

其中 \(|V|\) 表示 \(V\) 这个集合的元素个数。

证明:

对于 \(d \leq \sqrt n\) 的部分 \(\left\lfloor\dfrac{n}{d} \right\rfloor\) 最多有 \(\sqrt n\) 个数。

对于 \(d > \sqrt n\) 的部分 \(\left\lfloor\dfrac{n}{d} \right\rfloor\) 最多有 \(\sqrt n\) 种不同的取值。

证毕。

所以复杂度为 \(O(\sqrt n)\)

小拓展

对于下式

\[\sum_{i = 1}^{\min(n,m)} \left\lfloor\dfrac{n}{i} \right\rfloor \left\lfloor\dfrac{m}{i} \right\rfloor \]

上文中的 \(j\) 应该等于 \(\min(\left \lfloor \dfrac{n}{\left \lfloor \dfrac{n}{i} \right\rfloor} \right\rfloor, \left \lfloor \dfrac{m}{\left \lfloor \dfrac{m}{i} \right\rfloor} \right\rfloor)\)

例题

参考文章

整除(数论)分块 - Luckyblock - 博客园

莫比乌斯反演 - OI Wiki

posted @ 2020-09-05 21:04  yu__xuan  阅读(110)  评论(3编辑  收藏  举报