整除分块

· · 算法·理论

问题

给定一个正整数 n

[1,n] 中的正整数 x,求:\lfloor\frac{n}{x} \rfloor 的不同的取值的数量。

结论

记:B = \lfloor \sqrt n \rfloor

n \ge B(B+1) 时,Ans= 2B
否则 Ans = 2B - 1

证明

记:f(x) = \lfloor\frac{n}{x} \rfloor

考虑交界处,即是否存在 f(B) = f(B+1)

故不存在 f(B) = f(B+1)

证毕!

技巧

沿用:f(x) = \lfloor\frac{n}{x} \rfloor

对于一个 x,如果想找 y \ge x,且 f(x) = f(y)

那么: y \in [x,f(f(x))]

证:

f(x) = f(y),则:

那么:$y = \frac{n}{f(x)+z}$。 若 $y = g(z)$,则函数 $g$ 是严格单调递减的,即对于任意 $z_1 < z_2$,有 $g(z_1) > g(z_2)$。 $$\therefore y \le \frac{n}{f(x)} \because y \in N \therefore y_{\max} = \left\lfloor \frac{n}{f(x)} \right\rfloor = f(f(x)) $$ 证毕!