数论分块


概论:

数论分块主要用来计算类似于下面的式子:

\[ \sum_{i=1}^n f(i)\lfloor \frac{n}{i} \rfloor \]

这类式子经常会在使用莫比乌斯反演的时候见到.

其思路十分简单:对于一些 \(i\), \(\lfloor \frac{n}{i} \rfloor\) 的值是相同的, 将这些 \(i\) 分段即可加快计算.

对于值 \(l\), 符合 \(\lfloor \frac{n}{l} \rfloor = \lfloor \frac{n}{r} \rfloor\) 的最大的 \(r=\left\lfloor \frac{n}{\lfloor \frac{n}{l} \rfloor} \right\rfloor\). 所以初始时令 \(l=1\), 计算出对应的 \(r\), 然后 \(l=r+1\) 迭代即可.

由于 \(\lfloor \frac{n}{i} \rfloor\) 单调递减且取值的数量是 \(O(\sqrt{n})\) 的,所以时间复杂度也为 \(O(\sqrt{n})\).

证明:

\(\lfloor \frac{n}{i} \rfloor = k\), 则有 \(n = ki + p, p\in[0,n)\).

\(\lfloor \frac{n}{i+d} \rfloor = k\), 则有 \(n = k(i+d) + p', p'=p-kd\).

\(p'>0\), 所以 \(d\) 的最大值 \(d_m=\lfloor \frac{p}{k} \rfloor\)

\[ \begin{aligned} r & = i+d_m \\ & = i+\left\lfloor \frac{n \mod i}{\lfloor \frac{n}{i} \rfloor} \right\rfloor \\ & = \left\lfloor \frac{i \lfloor \frac{n}{i} \rfloor + n-i \lfloor \frac{n}{i} \rfloor}{\lfloor \frac{n}{i} \rfloor} \right\rfloor \\ & = \left\lfloor \frac{n}{\lfloor \frac{n}{l} \rfloor} \right\rfloor \end{aligned} \]

复杂度证明

对于 \(i \le \lfloor \sqrt{n} \rfloor\), 最多有 \(\lfloor \sqrt{n} \rfloor\) \(\lfloor \frac{n}{i} \rfloor\) 的取值.

对于 \(i > \lfloor \sqrt{n} \rfloor\), \(\lfloor \frac{n}{i} \rfloor \le \lfloor \sqrt{n} \rfloor\) 最多有 \(\lfloor \sqrt{n} \rfloor\) \(\lfloor \frac{n}{i} \rfloor\) 的取值.

所以对于所有 \(i\), \(\lfloor \frac{n}{i} \rfloor\) 最多有 \(2\lfloor \sqrt{n} \rfloor\) 种取值.

One more thing:

有一个结论需要在此证明:

\[ \left\lfloor \frac{\left\lfloor \frac{n}{a} \right\rfloor}{b} \right\rfloor = \left\lfloor \frac{n}{ab} \right\rfloor \]

这个结论会在大部分莫比乌斯反演题中出现, 同时也是理解后面的筛法的重要结论.

\[ \begin{aligned} \left\lfloor \frac{\left\lfloor \frac{n}{a} \right\rfloor}{b} \right\rfloor & = \left\lfloor \frac{n - n \mod a}{ab} \right\rfloor \\ & > \left\lfloor \frac{n - ab}{ab} \right\rfloor = \left\lfloor \frac{n}{ab} \right\rfloor - 1 \\ \therefore \left\lfloor \frac{\left\lfloor \frac{n}{a} \right\rfloor}{b} \right\rfloor & = \left\lfloor \frac{n}{ab} \right\rfloor \end{aligned} \]