整除分块正确性证明

看到《算法竞赛进阶指南》上对于整除分块的正确性证明略有些不太自然,这里给出我的证明方法。
我们要证明:

\[r = \lfloor \frac N {\lfloor \frac N l\rfloor} \rfloor \implies \lfloor \frac N l \rfloor = \lfloor \frac N r \rfloor \]

其中 \(l\)\(N\) 都为正整数,且正整数 \(r\)最大的使该式成立的 \(r\)
证明:
不妨设一个正整数 \(n\),使得

\[\lfloor \frac N l \rfloor = n \]

根据下取整函数的性质,我们能将上式转化为不等式,从而去掉下取整函数:

\[n \le \frac N l < n + 1 \]

化为关于 \(l\) 的不等式:

\[\frac N {n+1} < l \le \frac N n \]

由此,我们知道,\(l\) 在上述的范围内时,\(\lfloor\dfrac N l \rfloor\) 取得的值是一样的,因此:

\[l \le r \le \frac N n = \frac N {\lfloor \frac N l \rfloor} \]

引理:\(n\le x \Leftrightarrow n \le \lfloor x \rfloor\),其中 \(n\) 为整数,\(x\) 为实数
这个引理还是很显然的,但是为了严谨,我们还是证明一下:
先证充分性:根据定义 \(x < \lfloor x \rfloor + 1\),则 \(n \le x < \lfloor x \rfloor + 1\),由于 \(n\)\(\lfloor x \rfloor\) 都是整数,所以 \(n\le \lfloor x \rfloor\)
再证必要性:根据定义 \(n \le \lfloor x \rfloor \le x\)

根据上述引理,

\[r \le \lfloor \frac N {\lfloor \frac N l\rfloor} \rfloor \]

因为 \(r\) 是最大的,故

\[r = \lfloor \frac N {\lfloor \frac N l\rfloor} \rfloor \]

证毕!

posted @ 2022-04-19 23:24  alfayoung  阅读(68)  评论(0编辑  收藏  举报