3 整值函数 INTEGER FUNCTIONS

3 整值函数 INTEGER FUNCTIONS

整数是离散数学的支柱,我们常常需要将分数或者任意的实数转换到整数。这一章的目的就是熟悉并熟练掌握这样的转换,了解它们的某些惊人的性质。

3.1 底和顶 FLOORS AND CEILINGS

我们首先来讨论(floor,最大整数)函数和(ceiling,最小整数)函数,对所有实数 \(x\),其定义如下:

\[\begin{aligned}\lfloor x\rfloor&=\text{小于或等于 }x\text{ 的最大整数;}\\\lceil x\rceil&=\text{大于或等于 }x\text{ 的最小整数。}\end{aligned}\tag{3.1}\label{3.1} \]

艾弗森早在 20 世纪 60 年代就引入了这个记号,同时引入了名称 “底” 和 “顶”。他发现,排字工人可以通过刮去 “[” 和 “]” 的顶部和底部来处理这个符号。他的记号完全流行开来,现在的底括号和顶括号可以用在专业论文中,并且无需再解释其意义。直到最近,人们还是经常书写 “\([x]\)” 来表示 \(\leqslant x\) 的最大整数,而对于最小整数函数则没有好的等价符号。有一些作者甚至尝试过使用 “\(]x[\)”,可以预见这不太可能成功。

)哎呦。(

除了记号的变化,函数本身也有变化。例如,某种袖珍计算器有一个 \(\operatorname{INT}\) 函数,当 \(x\) 是正数时定义为 \(\lfloor x\rfloor\),而当 \(x\) 是负数时定义为 \(\lceil x\rceil\)。这些计算器的设计者大概是希望 \(\operatorname{INT}\) 函数能满足恒等式 \(\operatorname{INT}(-x)=-\operatorname{INT}(x)\)。但是,我们还是用底函数和顶函数,因为它们有更好的性质。

要熟悉底函数和顶函数,最好是了解它们的图形,其图形在直线 \(f(x)=x\) 的上方和下方形成阶梯状的模式。例如,我们从图中看到

\[\begin{array}{l}\lfloor\mathrm e\rfloor=2~,\quad\lfloor-\mathrm e\rfloor=-3~,\\[1ex]\lceil\mathrm e\rceil=3~,\quad\lceil-\mathrm e\rceil=-2~,\end{array} \]

因为有 \(\mathrm e=2.718~28\cdots\)

仔细审视这个图形,我们可以观察到关于底和顶的几个事实。首先,由于底函数位于对角线 \(f(x)=x\) 上或者其下方,所以我们有 \(\lfloor x\rfloor\leqslant x\);类似地,有 \(\lceil x\rceil\geqslant x\)。(当然,从定义上来看这是很显然的。)这两个函数在整数点的值正好相等:

\[\lfloor x\rfloor=x\iff x\text{ 是整数}\iff\lceil x\rceil=x~. \]

(我们用记号 \(\iff\) 表示 “当且仅当”。)此外,当它们不相等时,顶函数恰好比底函数大 \(1\)

\[\lceil x\rceil-\lfloor x\rfloor=[x\text{ 不是整数}]~.\tag{3.2}\label{3.2} \]

聪明。根据艾弗森的括号约定,这是一个完整的等式。

如果我们将对角线向下移动一个单位,它就完全位于底函数的下方,所以 \(x-1<\lfloor x\rfloor\);类似地,有 \(x+1>\lceil x\rceil\)。把这些结果组合起来就给出

\[x-1<\lfloor x\rfloor\leqslant x\leqslant\lceil x\rceil<x+1\tag{3.3}\label{3.3} \]

最后,这些函数关于两个坐标轴互为反射:

\[\lfloor-x\rfloor=-\lceil x\rceil~;\quad\lceil-x\rceil=-\lfloor x\rfloor~.\tag{3.4}\label{3.4} \]

从而每一个记号都容易用另一个记号来表示。这一事实有助于解释为什么顶函数一度没有它自己的记号。但是我们看到,顶函数常常足以证明应该给它们特殊的符号,恰如我们既对上升幂也对下降幂采取特殊记号一样。长久以来,数学家们一直有正弦和余弦、正切和余切、正割和余割、最大和最小这样的对象,现在我们又有了两个:底和顶。

下星期我们要给房子添上墙壁了。

为了实实在在地证明底函数和顶函数的性质,而不只是从图形上来观察这样的事实,运用下面这四条法则会特别有用:

\[\def\arraystretch{1.25}\begin{array}{ll}\lfloor x\rfloor=n\iff n\leqslant x<n+1~,&\text{(a)}\\\lfloor x\rfloor=n\iff x-1<n\leqslant x~,&\text{(b)}\\\lceil x\rceil=n\iff n-1<x\leqslant n~,&\text{(c)}\\\lceil x\rceil=n\iff x\leqslant n<x+1~.&\text{(d)}\end{array}\tag{3.5}\label{3.5} \]

(在这四种情形中,我们假设 \(n\) 是整数,而 \(x\) 是实数。)法则 \(\text{(a)}\)\(\text{(c)}\) 是式 \(\eqref{3.1}\) 的直接结果;法则 \(\text{(b)}\)\(\text{(d)}\) 是一样的,只是重排不等式,使得 \(n\) 位于中间。

有可能将一个整数项移进或者移出底(或者顶):

\[\lfloor x+n\rfloor=\lfloor x\rfloor+n~,\quad n\text{ 为整数}.\tag{3.6}\label{3.6} \]

(因为法则 \(\text{(3.5a)}\) 是说这一论断等价于不等式 \(\lfloor x\rfloor+n\leqslant x+n<\lfloor x\rfloor+n+1\)。)但是类似的运算,像将一个常数因子移出去,一般是不能做的。例如,当 \(n=2\)\(x=1/2\) 时,我们有 \(\lfloor nx\rfloor\ne n\lfloor x\rfloor\)。这就意味着底括号和顶括号比较死板。如果能避开它们,或者在它们存在时能证明出任何结论,通常就很幸运了。

事实已经表明,底括号和顶括号在许多情况下是多余的,因而我们能随意插入或者去掉它们。例如,实数与整数之间的任何不等式都等价于整数之间的一个关于底或者顶的不等式:

\[\def\arraystretch{1.25}\begin{array}{ll}x<n\iff\lfloor x\rfloor<n~,&\text{(a)}\\n<x\iff n<\lceil x\rceil~,&\text{(b)}\\x\leqslant n\iff\lceil x\rceil\leqslant n~,&\text{(c)}\\n\leqslant x\iff n\leqslant\lfloor x\rfloor~.&\text{(d)}\end{array}\tag{3.7}\label{3.7} \]

这些法则很容易证明。例如,如果 \(x<n\),那么肯定有 \(\lfloor x\rfloor<n\),因为 \(\lfloor x\rfloor\leqslant x\)。反过来,如果 \(\lfloor x\rfloor<n\),那么必定有 \(x<n\),因为 \(x<\lfloor x\rfloor+1\)\(\lfloor x\rfloor+1\leqslant n\)

如果记住 \(\eqref{3.7}\) 中的四个法则与记住它们的证明同样容易,就好了。每一个不带底或顶的不等式都与带底或顶的同样不等式相对应,不过在决定二者之中哪个更合适之前,我们还需要反复思考。

\(x\)\(\lfloor x\rfloor\) 之间的差称为 \(x\)分数部分(fractional part),它在应用中经常出现,所以值得拥有自己的记号:

\[\{x\}=x-\lfloor x\rfloor~.\tag{3.8}\label{3.8} \]

嗯。当它可能与仅包含一个元素 \(x\) 的集合混淆时,我们最好不要用 \(\{x\}\) 来表示分数部分。

我们有时称 \(\lfloor x\rfloor\)\(x\)整数部分(integer part),因为 \(x=\lfloor x\rfloor+\{x\}\)。如果实数 \(x\) 可以写成 \(x=n+\theta\),其中 \(n\) 是整数,且 \(0\leqslant\theta<1\),那么根据 \(\text{(3.5a)}\) 就能断定有 \(n=\lfloor x\rfloor\) 以及 \(\theta=\{x\}\)

如果 \(n\) 是任意的实数,那么恒等式 \(\eqref{3.6}\) 并不成立。但是我们可以推出,对于 \(\lfloor x+y\rfloor\),一般来说只有两种可能性:如果我们记 \(x=\lfloor x\rfloor+\{x\}\) 以及 \(y=\lfloor y\rfloor+\{y\}\),那么就有 \(\lfloor x+y\rfloor=\lfloor x\rfloor+\lfloor y\rfloor+\big\lfloor\{x\}+\{y\}\big\rfloor\)。又由于 \(0\leqslant\{x\}+\{y\}<2\),我们发现 \(\lfloor x+y\rfloor\) 有时等于 \(\lfloor x\rfloor+\lfloor y\rfloor\),否则它就等于 \(\lfloor x\rfloor+\lfloor y\rfloor+1\)

第二种情形当且仅当将分数部分 \(\{x\}\)\(\{y\}\) 相加,在小数点的位置上出现一个 “进位” 时才会出现。

3.2 底和顶的应用 FLOOR/CEILING APPLICATIONS

我们已经见识了处理底和顶的基本工具,现在来将它们付诸应用,从一个容易的问题开始:\(\lceil\lg35\rceil\) 等于什么?(根据 Edward M. Reingold 的建议,我们用 \(\lg\) 表示以 \(2\) 为底的对数。)那么,由于 \(2^5<35\leqslant2^6\),我们可以取对数得到 \(5<\lg35\leqslant6\),所以由关系式 \(\text{(3.5c)}\)\(\lceil\lg35\rceil=6\)

注意,数 \(35\) 写成二进制时有 \(6\) 位:\(35=(100011)_2\)\(\lceil\lg n\rceil\)\(n\) 写成二进制时的长度,这是否总正确?并不见得,我们也需要 \(6\) 位来表示 \(32=(100000)_2\)。所以对此问题,\(\lceil\lg n\rceil\) 是一个错误的答案。(它仅当 \(n\)\(2\) 的幂时才失效,但是这会有无穷多次的失效。)意识到写出每一个满足 \(2^{m-1}\leqslant n<2^m\) 的数 \(n\) 要用 \(m\) 位,由此我们可以求得一个正确的答案,从而由 \(\text{(3.5a)}\) 知,\(m-1=\lfloor\lg n\rfloor\),所以 \(m=\lfloor\lg n\rfloor+1\)。那就是说,对所有 \(n>0\),我们需要 \(\lfloor\lg n\rfloor+1\) 位来将 \(n\) 表示成二进制数,或者换一种方式,类似的推导得到答案 \(\big\lceil\lg(n+1)\big\rceil\)。如果我们愿意说成将 \(n=0\) 写成二进制时需要零位,那么这个公式对 \(n=0\) 也成立。

接下来我们研究用多个底或者顶的表达式。\(\big\lceil\lfloor x\rfloor\big\rceil\) 是什么?这很容易,因为 \(\lfloor x\rfloor\) 是整数,所以 \(\big\lceil\lfloor x\rfloor\big\rceil\) 就是 \(\lfloor x\rfloor\)。对于最内层是 \(\lfloor x\rfloor\) 而外面包围有任意多个底或者顶的任何其他表达式也有同样结论。

下面是一个更难的问题:证明或者推翻断言

\[\left\lfloor\sqrt{\lfloor x\rfloor}\right\rfloor=\left\lfloor\sqrt x\right\rfloor,\quad\text{实数 }x\geqslant0~.\tag{3.9}\label{3.9} \]

\(x\) 为整数时等号显然成立,因为 \(x=\lfloor x\rfloor\)。等式在 \(\pi=3.141~59\cdots\)\(\mathrm e=2.718~28\cdots\) 以及 \(\phi=(1+\sqrt5)/2=1.618~03\cdots\) 这些特殊情形下成立,因为我们得到 \(1=1\)。我们未能发现一个反例,这表明在一般情形下等式成立,故而我们来尝试证明它。

\(\pi\)\(\mathrm e\)\(\phi\) 显然是进行尝试的首批实数,不是吗?)

附带指出,当面对 “证明或推翻” 的时候,通常先尝试用一个反例来推翻它更好一些,这有两个原因:否定可能更容易一些(我们只需要一个反例);挑毛病会激发我们的创造精神。即便给定的结论为真,如果我们能看出为什么不可能存在反例,搜寻反例也往往能把我们引向证明。此外,持怀疑态度是有益的。

有限程度的怀疑是有益的。对于证明和程序持怀疑态度(尤其是对你自己的东西),可以保持你的水平,并使你的工作比较稳定。但是,过分怀疑就可能使自己一直闭门工作,得不到出去锻炼和放松的机会。怀疑态度太浓,就是在走向僵化,在这种状态下,你会对是否正确和严谨极度担心,以至于你做任何事都永远无法完成。——一位怀疑论者

如果我们借助微积分来证明 \(\left\lfloor\sqrt{\lfloor x\rfloor}\right\rfloor=\left\lfloor\sqrt x\right\rfloor\),可能会首先将 \(x\) 分解成整数部分和分数部分 \(\lfloor x\rfloor+\{x\}=n+\theta\),再利用二项式定理将平方根展开:\((n+\theta)^{1/2}=n^{1/2}+n^{-1/2}\theta/2-n^{-3/2}\theta^2/8+\cdots\)。但是,这一做法相当棘手。

利用我们开发出来的工具要容易得多。有一种可能的做法是:用某种方法去掉 \(\left\lfloor\sqrt{\lfloor x\rfloor}\right\rfloor\) 外层的底和平方根,然后去掉内层的底,接着再将外层的符号加回去以得到 \(\left\lfloor\sqrt x\right\rfloor\)。好的。我们设 \(m=\left\lfloor\sqrt{\lfloor x\rfloor}\right\rfloor\) 并利用 \(\text{(3.5a)}\) 得到 \(m\leqslant\sqrt{\lfloor x\rfloor}<m+1\)。这就去掉了外层的底括号,且并未失去任何信息。由于所有三个表达式都是非负的,将它们平方,就得到 \(m^2\leqslant\lfloor x\rfloor<(m+1)^2\)。这就避免了平方根。接下来去掉底,对左边的不等式利用 \(\text{(3.7d)}\),对右边的不等式利用 \(\text{(3.7a)}\)\(m^2\leqslant x<(m+1)^2\)。现在,回溯步骤就简单了:取平方根得到 \(m\leqslant\sqrt x<m+1\),利用 \(\text{(3.5a)}\) 得到 \(m=\left\lfloor\sqrt x\right\rfloor\)。从而 \(\left\lfloor\sqrt{\lfloor x\rfloor}\right\rfloor=m=\left\lfloor\sqrt x\right\rfloor\),结论为真。类似地,我们可以证明

\[\left\lceil\sqrt{\lceil x\rceil}\right\rceil=\left\lceil\sqrt x\right\rceil,\quad\text{实数 }x\geqslant0~. \]

我们刚才所找到的证明没有严重依赖于平方根的性质。更仔细的观察表明,我们可以推广这种想法并用来证明更多的东西:设 \(f(x)\) 是任意一个具有如下性质且在一个实数区间连续的单调递增函数

\[f(x)=\text{整数}\implies x=\text{整数.} \]

(符号 “\(\implies\)” 表示 “蕴涵”),于是,只要 \(f(x)\)\(f(\lfloor x\rfloor)\)\(f(\lceil x\rceil)\) 都有定义,我们就有

\[\big\lfloor f(x)\big\rfloor=\big\lfloor f(\lfloor x\rfloor)\big\rfloor\text{ 和 }\big\lceil f(x)\big\rceil=\big\lceil f(\lceil x\rceil)\big\rceil~,\tag{3.10}\label{3.10} \]

(这一结果是由当时还是大学生的 R. J. McEliece 得到的。)

我们来对顶证明这个一般的性质,先前我们对底做了证明,而且对底的证明几乎是相同的。如果 \(x=\lceil x\rceil\),就没什么要证明的了。如若不然,就有 \(x<\lceil x\rceil\),于是有 \(f(x)<f(\lceil x\rceil)\),这是因为 \(f\) 递增。从而就有 \(\big\lceil f(x)\big\rceil\leqslant\big\lceil f(\lceil x\rceil)\big\rceil\),因为 \(\lceil~\rceil\) 非减。如果 \(\big\lceil f(x)\big\rceil<\big\lceil f(\lceil x\rceil)\big\rceil\),那么就必定存在一个数 \(y\),使得 \(x\leqslant y<\lceil x\rceil\) 以及 \(f(y)=\big\lceil f(x)\big\rceil\),因为 \(f\) 是连续的。鉴于 \(f\) 的特殊性质,这个 \(y\) 是一个整数。但是不可能有一个整数严格位于 \(\lfloor x\rfloor\)\(\lceil x\rceil\) 之间。这个矛盾就说明我们必定有 \(\big\lceil f(x)\big\rceil=\big\lceil f(\lceil x\rceil)\big\rceil\)

这个定理的一个重要特例值得提出来加以注意:如果 \(m\)\(n\) 是整数且分母 \(n\) 为正,则

\[\left\lfloor\frac{x+m}n\right\rfloor=\left\lfloor\frac{\lfloor x\rfloor+m}n\right\rfloor\text{ 和 }\left\lceil\frac{x+m}n\right\rceil=\left\lceil\frac{\lceil x\rceil+m}n\right\rceil.\tag{3.11}\label{3.11} \]

例如,令 \(m=0\),就有 \(\Big\lfloor\big\lfloor\lfloor x/10\rfloor/10\big\rfloor/10\Big\rfloor=\lfloor x/1000\rfloor\)。三次用 \(10\) 来除并抛弃个位数字,与用 \(1000\) 来除并去掉余数,结果是一样的。

现在,我们尝试证明或推翻另一个命题:

\[\left\lceil\sqrt{\lfloor x\rfloor}\right\rceil\stackrel?=\left\lceil\sqrt x\right\rceil,\quad\text{实数 }x\geqslant0~. \]

它对 \(x=\pi\)\(x=\mathrm e\) 成立,但对 \(x=\phi\) 不成立,所以我们知道它一般不为真。

进一步探讨之前,我们暂时离题来讨论在数学书中有可能出现的不同水平的问题。

水平 1 给定一个显式对象 \(x\) 和一个显式性质 \(P(x)\)证明 \(P(x)\) 为真,例如 “证明 \(\lfloor\pi\rfloor=3\)”。这里的问题在于对所宣称的某个事实寻求一个证明。

水平 2 给定一个显式集合 \(X\) 和一个显式性质 \(P(x)\)证明 \(P(x)\) 对所有 \(x\in X\) 为真,例如 “证明对所有实数 \(x\)\(\lfloor x\rfloor\leqslant x\)”。问题仍然在于寻求一个证明,但是这一次证明必须具有一般性。我们是在做代数,而不是做算术。

水平 3 给定一个显式集合 \(X\) 和一个显式性质 \(P(x)\)证明或推翻 \(P(x)\) 对所有 \(x\in X\) 为真,例如 “证明或推翻对所有实数 \(x\geqslant0\)\(\left\lceil\sqrt{\lfloor x\rfloor}\right\rceil=\left\lceil\sqrt x\right\rceil\)”。这里有一个附加的不确定性水平,两种结果皆有可能。这更接近于数学家们通常面对的真实情形:写进书中的结论都倾向于是正确的,但是新的事物必须以挑剔怀疑的眼光来审视。如果该命题为假,我们的任务就是寻找一个反例;如果该命题为真,我们就必须如同在水平 2 中那样寻找一个证明。

在我的其他教科书中,“证明或推翻” 在大约 99.44% 的时间里似乎与 “证明” 同义,但在这本书里则不然。

水平 4 给定一个显式集合 \(X\) 和一个显式性质 \(P(x)\),寻求一个使 \(P(x)\) 为真的必要且充分的条件 \(Q(x)\),例如 “求使 \(\lfloor x\rfloor\geqslant\lceil x\rceil\) 成立的必要且充分条件”。问题是求出使得 \(P(x)\iff Q(x)\) 成立的 \(Q\)。当然,总有一个平凡的答案,我们可以取 \(Q(x)=P(x)\)。但是问题中所隐含的要求是寻求一个尽可能简单的条件。这要求用创造力来发现一个能取得成功的简单的条件。(例如,在此情形下,“\(\lfloor x\rfloor\geqslant\lceil x\rceil\iff x\text{ 是整数}\)”。)寻求 \(Q(x)\) 所需要的其他发现要素使得这种问题更加困难,但这是数学家们在 “真实世界” 中必须要做的更加典型的工作。最后,当然必须要给出证明:\(P(x)\) 为真当且仅当 \(Q(x)\) 为真。

但是不要过分简单。——爱因斯坦

水平 5 给定一个显式集合 \(X\),寻求其元素的一个有趣的性质 \(P(x)\)。我们现在处在令人恐怖的纯粹研究领域,学生们可能会认为一切是由混沌统治着。这是真实的数学。教科书的作者们很少敢于提出水平 5 的问题。

结束离题的讨论。我们把最后的那个问题从水平 3 变成水平 4:使得 \(\left\lceil\sqrt{\lfloor x\rfloor}\right\rceil=\left\lceil\sqrt x\right\rceil\) 成立的必要且充分条件是什么?我们已经观察到,当 \(x=3.142\) 时等式成立,而当 \(x=1.618\) 时则不然,进一步的实验表明当 \(x\) 介于 \(9\)\(10\) 之间时等式也不成立。哦嗬,是的。我们看到每当 \(m^2<x<m^2+1\) 时坏的情形就出现,因为此时左边给出 \(m\),而右边则给出 \(m+1\)。在所有定义了 \(\sqrt x\) 的其他情形下,即当 \(x=0\) 或者 \(m^2+1\leqslant x\leqslant(m+1)^2\) 的情形,我们都能得到等式。这样一来,下面的命题就是等式成立的必要且充分条件:或者 \(x\) 是整数,或者 \(\sqrt{\lfloor x\rfloor}\) 不是整数。

Toledo Mudhens 棒球队的家园。

“哦嗬” 的英文 Oho 与美国 Ohio 州的州名发音相近。Toledo 是该州一个小城市的城市名,而 Toledo Mudhens 则是这个小城市的棒球队队名。

为了讨论下一个问题,我们来考虑一个表示实直线上区间的简便的新记号,这个记号是 C. A. R. Hoare 和 Lyle Ramshaw 建议使用的:\([\alpha..\beta]\) 表示满足 \(\alpha\leqslant x\leqslant\beta\) 的实数 \(x\) 的集合。这个集合称为闭区间(closed interval),因为它包含两个端点 \(\alpha\)\(\beta\)。不包含两个端点的区间记为 \((\alpha..\beta)\),它由所有满足 \(\alpha<x<\beta\)\(x\) 组成,这称为开区间(open interval)。区间 \([\alpha..\beta)\) 和区间 \((\alpha..\beta]\)(它们都只包含一个端点)定义类似,它们称为半开(half-open)区间。

(或者,按照悲观主义者的说法,它们是半闭的。)

有多少整数包含在这样的区间中?半开区间要更容易一些,故而我们从它们开始。事实上,半开区间几乎总是比开区间或闭区间好一些。例如,它们是可加的——我们可以将半开区间 \([\alpha..\beta)\) 和半开区间 \([\beta..\gamma)\) 组合起来形成半开区间 \([\alpha..\gamma)\)。这对开区间行不通,因为点 \(\beta\) 被排除在外,对闭区间也会出现问题,因为 \(\beta\) 会被包含两次。

回到我们的问题。如果 \(\alpha\)\(\beta\) 是整数,答案很容易:假设 \(\alpha\leqslant\beta\),此时 \([\alpha..\beta)\) 包含 \(\beta-\alpha\) 个整数 \(\alpha,\alpha+1,\cdots\,\!,\beta-1\)。类似地,在这样的情形下,\((\alpha..\beta]\) 包含 \(\beta-\alpha\) 个整数。但是我们的问题要更难一些,因为 \(\alpha\)\(\beta\) 是任意的实数。尽管如此,根据 \(\eqref{3.7}\),当 \(n\) 是整数时,由于

\[\def\arraystretch{1.25}\begin{array}{l}\alpha\leqslant n<\beta\iff \lceil\alpha\rceil\leqslant n<\lceil\beta\rceil~,\\\alpha<n\leqslant\beta\iff\lfloor\alpha\rfloor<n\leqslant\lfloor\beta\rfloor~,\end{array} \]

我们可以将它转换成更加容易的问题。右边的区间有整数端点且与左边的区间包含同样多个整数(左边的区间有实数端点)。所以区间 \([\alpha..\beta)\) 恰好包含 \(\lceil\beta\rceil-\lceil\alpha\rceil\) 个整数,而 \((\alpha..\beta]\) 则包含 \(\lfloor\beta\rfloor-\lfloor\alpha\rfloor\) 个整数。这就是我们实际上希望引入底括号和顶括号(而不是避开它们)的恰当例子。

顺便说一句,在哪种情形下使用底,而在哪种情形下使用顶,这是有一种方法的。包含左端点但不包含右端点的半开区间(例如 \(0\leqslant\theta<1\))比包含右端点但不包含左端点的半开区间略微常用一些,底也比顶更常用。所以根据墨菲定律,正确的法则与我们希望的相反——顶用于 \([\alpha..\beta)\),而底用于 \((\alpha..\beta]\)

正如我们能通过唱歌记得哥伦布航海出发的日期那样:“在 1493 年/哥伦布向蔚蓝的大海航行而去。”

类似的分析表明,闭区间 \([\alpha..\beta]\) 恰好包含 \(\lfloor\beta\rfloor-\lceil\alpha\rceil+1\) 个整数,而开区间 \((\alpha..\beta)\) 则包含 \(\lceil\beta\rceil-\lfloor\alpha\rfloor-1\) 个整数。不过我们对后者赋予了额外限制 \(\alpha\ne\beta\),从而使得这个公式不会由于下面的断言而陷入窘境:空的区间 \((\alpha..\alpha)\) 总共含有 \(-1\) 个整数。总结起来,我们得到了下述事实

\[\def\arraystretch{1.25}\begin{array}{cll}\text{区间}\hspace{2.5em}&\text{包含的整数}\hspace{4em}&\text{限制条件}\\ [~\alpha..\beta~]\hspace{2.5em}&\lfloor\beta\rfloor-\lceil\alpha\rceil+1&~~\alpha\leqslant\beta\\ [~\alpha..\beta~)\hspace{2.5em}&\lceil\beta\rceil-\lceil\alpha\rceil&~~\alpha\leqslant\beta\\(~\alpha..\beta~]\hspace{2.5em}&\lfloor\beta\rfloor-\lfloor\alpha\rfloor&~~\alpha\leqslant\beta\\(~\alpha..\beta~)\hspace{2.5em}&\lceil\beta\rceil-\lfloor\alpha\rfloor-1&~~\alpha<\beta\end{array}\tag{3.12}\label{3.12} \]

现在有一个我们不能拒绝的问题。具体数学俱乐部有一个赌场(仅对本书的购买者开放),其中有一个轮盘赌轮,它有一千个投币口,标号 \(1\)\(1000\)。如果在一次旋转中出现的数 \(n\) 能被它的立方根的底整除,也就是说,如果

\[\left\lfloor\sqrt[3]n\right\rfloor\setminus n~, \]

那么它就是一个赢点,庄家赔付给我们 \(5\) 美元;否则它就是一个输点,我们就需要赔付 \(1\) 美元。(记号 \(a\setminus b\) 读作 “\(a\) 整除 \(b\)”,含义是 \(b\)\(a\) 的整倍数,第 4 章要仔细研究这个关系。)如果玩这个游戏,我们能指望赢钱吗?

(对此所做的一项班级投票结果表明:28 名学生认为不应去玩,13 名想去赌一把,余下的人则拿不定而无法作答。)
(因此我们挥动具体数学球棒给了他们一击。)

我们可以计算平均赢率,也就是每玩一次我们将会赢(输)的量,首先计算赢点的个数 \(W\) 以及输点的个数 \(L=1000-W\)。如果在 \(1000\) 次游戏中每个数都出现一次,我们就赢得 \(5W\) 美元而损失 \(L\) 美元,故而平均赢率将是

\[\frac{5W-L}{1000}=\frac{5W-(1000-W)}{1000}=\frac{6W-1000}{1000}~. \]

如果有 \(167\) 个或者更多的赢点,我们就占优,反之庄家占优。

\(1\)\(1000\) 中,我们如何来计算赢点的个数呢?不难想出一个模式来。从 \(1\) 一直到 \(2^3-1=7\) 全都是赢点,因为对其中每一个数都有 \(\left\lfloor\sqrt[3]n\right\rfloor=1\)。从数 \(2^3=8\) 一直到 \(3^3-1=26\) 中仅有偶数是赢点。在数 \(3^3=27\) 一直到 \(4^3-1=63\) 中,仅仅那些被 \(3\) 整除的数是赢点。如此等等。

如果使用第 2 章的求和技术,并利用关于估计值为 \(0\) 或者 \(1\) 的逻辑命题的艾弗森约定,整个结构可以系统地加以分析:

\[\begin{aligned}W&=\sum_{n=1}^{1000}~[n\text{ 是赢点}]\\&=\sum_{1\leqslant n\leqslant1000}\Big[\left\lfloor\sqrt[3]n\right\rfloor\setminus n\Big]=\sum_{k,n}\Big[k=\left\lfloor\sqrt[3]n\right\rfloor\Big][k\setminus n][1\leqslant n\leqslant1000]\\&=\sum_{k,m,n}[k^3\leqslant n<(k+1)^3][n=km][1\leqslant n\leqslant1000]\\&=1+\sum_{k,m}[k^3\leqslant km<(k+1)^3][1\leqslant k<10]\\&=1+\sum_{k,m}[m\in[k^2..(k+1)^3/k)][1\leqslant k<10]\\&=1+\sum_{1\leqslant k<10}\Big(\left\lceil k^2+3k+3+1/k\right\rceil-\left\lceil k^2\right\rceil\Big)\\&=1+\sum_{1\leqslant k<10}(3k+4)=1+\frac{7+31}2\times9=172~.\end{aligned} \]

这个推导值得仔细研究。注意,第 6 行用到了关于半开区间中整数个数的公式 \(\eqref{3.12}\)。其中仅有的 “困难的” 操作是在第 3 行与第 4 行之间做出的将 \(n=1000\) 作为一个特殊情形来处理的决定。(当 \(k=10\) 时,不等式 \(k^3\leqslant n<(k+1)^3\)\(1\leqslant n\leqslant1000\) 组合起来并不容易。)一般来说,边界条件往往是处理 \(\Sigma\) 时最关键的部分。

此话不假。

最后一行是说 \(W=172\),因此每次游戏的平均赢率的公式化简为 \((6\times172-1000)/1000\) 美元,即 \(3.2\) 美分。我们可以指望在做了 \(100\) 次每次 \(1\) 美元的赌博之后能挣到大约 \(3.2\) 美元。(当然,庄家可能会玩弄花招让某些数比其他数出现得更频繁。)

你说这个赌场在哪儿来着?

我们刚刚解决的博彩问题是一个更为现实的问题的变形:“在 \(1\leqslant n\leqslant1000\) 中有多少个整数 \(n\) 满足关系 \(\left\lfloor\sqrt[3]n\right\rfloor\setminus n\)?” 从数学上说,这两个问题是相同的。但是,有时将一个问题装扮一番不失为一个好主意。我们习惯于使用更多的词(如 “赢点” 和 “输点”),这些词有助于我们理解所发生的事情。

我们来推广。假设将 \(1000\) 改为 \(1~000~000\),或者换成一个更大的数 \(N\)。(我们假设该赌场颇具影响力,且能搞到一个更大的轮盘。)现在有多少个赢点呢?

同样的推理方法仍然适用,不过我们需要更仔细地处理 \(k\) 的最大值,为方便起见将它记为 \(K\)

\[K=\left\lfloor\sqrt[3]N\right\rfloor. \]

(上一次的 \(K\)\(10\)。)对一般的 \(N\),赢点的总数是

\[\begin{aligned}W&=\sum_{1\leqslant k<K}(3k+4)+\sum_m[K^3\leqslant Km\leqslant N]\\&=\frac12(7+3K+1)(K-1)+\sum_m[m\in[K^2..N/K]]\\&=\frac32K^2+\frac52K-4+\sum_m[m\in[K^2..N/K]]~.\end{aligned} \]

我们知道,剩下的那个和式是 \(\lfloor N/K\rfloor-\left\lceil K^2\right\rceil+1=\lfloor N/K\rfloor-K^2+1\),故而公式

\[W=\lfloor N/K\rfloor+\frac12K^2+\frac52K-3~,\quad K=\left\lfloor\sqrt[3]N\right\rfloor\tag{3.13}\label{3.13} \]

给出了轮盘大小为 \(N\) 的一般答案。

这个公式的前两项近似等于 \(N^{2/3}+\dfrac12N^{2/3}=\dfrac32N^{2/3}\),当 \(N\) 很大时,其他的项相比要小得多。在第 9 章里,我们将要学习导出

\[W=\frac32N^{2/3}+O(N^{1/3}) \]

这样的表达式,其中 \(O(N^{1/3})\) 代表一个不超过 \(N^{1/3}\) 常数倍的量。无论这个常数是什么,我们知道它与 \(N\) 无关,所以对于很大的 \(N\)\(O\) 项对 \(W\) 的贡献与 \(\dfrac32N^{2/3}\) 相比非常小。例如,下表说明了 \(\dfrac32N^{2/3}\)\(W\) 是何等接近,这是相当好的近似。

\[\def\hh{\hspace{1em}}\def\h{\hspace{2.5em}}\def\arraystretch{1.25}\begin{array}{rrrr}N\phantom{00~000}\hh&\dfrac32N^{2/3}\h&W\phantom{343}\h&\text{%误差}\h\\[1ex]\hline1~000\hh&150.0\h&172\h&12.791\h\\10~000\hh&696.2\h&746\h&6.670\h\\100~000\hh&3231.7\h&3343\h&3.331\h\\1~000~000\hh&15000.0\h&15247\h&1.620\h\\10~000~000\hh&69623.8\h&70158\h&0.761\h\\100~000~000\hh&323165.2\h&324322\h&0.357\h\\1~000~000~000\hh&1500000.0\h&1502497\h&0.166\h\end{array} \]

近似公式是有用的,因为它们比带有底和顶的公式更加简单。然而,精确的真值常常也是很重要的,特别是对于在实际情形中容易出现的 \(N\) 的更小的值(精确的真值就更为重要)。例如,赌场的主人有可能会错误地假设当 \(N=1000\) 时仅有 \(\dfrac32N^{2/3}=150\) 个赢点(此情形对庄家会有 \(10\) 美分的好处)。

这一节里的最后一个应用是研究所谓的谱。我们定义,一个实数 \(\alpha\)(spectrum)是整数组成的一个无限多重集合:

\[\operatorname{Spec}(\alpha)=\big\{\lfloor\alpha\rfloor,\lfloor2\alpha\rfloor,\lfloor3\alpha\rfloor,\cdots\,\!\big\}~. \]

(一个多重集合与一个集合相似,不过它可以有重复的元素。)例如,\(1/2\) 的谱的开头部分是 \(\{0,1,1,2,2,3,3,\cdots\,\!\}\)

容易证明,没有两个谱是相等的,也就是说,\(\alpha\ne\beta\) 就意味着 \(\operatorname{Spec}(\alpha)\ne\operatorname{Spec}(\beta)\)。不失一般性,假设 \(\alpha<\beta\),就存在一个正整数 \(m\) 使得 \(m(\beta-\alpha)\geqslant1\)。(事实上,任何一个 \(m\geqslant\big\lceil1/(\beta-\alpha)\big\rceil\) 都行,但是我们无需卖弄有关底和顶的知识。)从而 \(m\beta-m\alpha\geqslant1\),且 \(\lfloor m\beta\rfloor>\lfloor m\alpha\rfloor\)。于是谱 \(\operatorname{Spec}(\beta)\) 有少于 \(m\) 个元素 \(\leqslant\lfloor m\alpha\rfloor\),而 \(\operatorname{Spec}(\alpha)\) 至少有 \(m\) 个这样的元素。

……没有太多(without lots of…)一般性……

谱有许多美妙的性质,例如,考虑两个多重集合

\[\begin{aligned}\operatorname{Spec}(\sqrt2)&=\{1,2,4,5,7,8,9,11,12,14,15,16,18,19,21,22,24,\cdots\,\!\}~,\\\operatorname{Spec}(2+\sqrt2)&=\{3,6,10,13,17,20,23,27,30,34,37,40,44,47,51,\cdots\,\!\}~.\end{aligned} \]

“如果 \(x\) 是一个小于 \(1\) 的无理数,量 \(m/x\)\(m/(1-x)\) 的级数之中(其中 \(m\) 是整数)有一个可能被发现介于任何给定的相邻整数之间,而且只能找到一个这样的量。” ——瑞利

容易用袖珍计算器计算 \(\operatorname{Spec}(\sqrt2)\),而根据 \(\eqref{3.6}\)\(\operatorname{Spec}(2+\sqrt2)\) 的第 \(n\) 个元素恰好比 \(\operatorname{Spec}(\sqrt2)\) 的第 \(n\) 个元素多 \(2n\)。再仔细观察表明,这两个谱还以更加惊人的方式联系在一起:似乎从一个谱中消失的数都会在另一个谱中出现,但是没有任何一个数在两个谱中都出现!这是真的:正整数是 \(\operatorname{Spec}(\sqrt2)\)\(\operatorname{Spec}(2+\sqrt2)\) 的不相交并集。我们说这些谱构成正整数的一个划分(partition)。

为证明这一结论,我们要来计算 \(\operatorname{Spec}(\sqrt2)\) 中有多少个元素是 \(\leqslant n\) 的,以及 \(\operatorname{Spec}(2+\sqrt2)\) 中有多少个元素是 \(\leqslant n\) 的。如果对每个 \(n\),这样的数的总和是 \(n\),这两个谱就的确给出整数的划分。

正确,因为当 \(n\) 增加 \(1\) 时,计数中恰有一个必定增加。

\(\alpha\) 为正数。\(\operatorname{Spec}(\alpha)\)\(\leqslant n\) 的元素的个数是

\[\begin{aligned}N(\alpha,n)&=\sum_{k>0}\big[\lfloor k\alpha\rfloor\leqslant n\big]\\&=\sum_{k>0}\big[\lfloor k\alpha\rfloor<n+1\big]\\&=\sum_{k>0}[k\alpha<n+1]\\&=\sum_k[0<k<(n+1)/\alpha]\\&=\big\lceil(n+1)/\alpha\rceil-1~.\end{aligned}\tag{3.14}\label{3.14} \]

这一推导过程有两处特别有意义。首先,它用规则

\[m\leqslant n\quad\iff\quad m<n+1~,\quad m\text{ 和 }n\text{ 为整数}\tag{3.15}\label{3.15} \]

将 “\(\leqslant\)” 改变成 “\(<\)”,所以根据 \(\eqref{3.7}\) 就可以将底括号去掉。还有更为巧妙的,它对 \(k>0\) 求和,而不是对 \(k\geqslant1\) 求和,因为对某些 \(n\)\(\alpha\)\((n+1)/\alpha\) 可能会小于 \(1\)。如果我们早先尝试用 \(\eqref{3.12}\) 来确定 \([1..(n+1)/\alpha)\) 中整数的个数,而不是确定 \(\big(0..(n+1)/\alpha\big)\) 中整数的个数,可能已经得到正确的答案了。但是我们的推导是有错误的,因为应用的条件没有满足。

好的,对 \(N(\alpha,n)\) 我们有一个公式。现在可以通过检验是否对所有整数 \(n>0\) 都有 \(N(\sqrt2,n)+N(2+\sqrt2,n)=n\) 来检测 \(\operatorname{Spec}(\sqrt2)\)\(\operatorname{Spec}(2+\sqrt2)\) 是否给出正整数的划分,利用 \(\eqref{3.14}\) 有:

\[\begin{align}&\left\lceil\frac{n+1}{\sqrt2}\right\rceil-1+\left\lceil\frac{n+1}{2+\sqrt2}\right\rceil-1=n\notag\\&\iff\left\lfloor\frac{n+1}{\sqrt2}\right\rfloor+\left\lfloor\frac{n+1}{2+\sqrt2}\right\rfloor=n~,\tag*{根据 (3.2);}\\&\iff\frac{n+1}{\sqrt2}-\left\{\frac{n+1}{\sqrt2}\right\}+\frac{n+1}{2+\sqrt2}-\left\{\frac{n+1}{2+\sqrt2}\right\}=n~,\tag*{根据 (3.8).}\end{align} \]

由于有整齐的恒等式

\[\frac1{\sqrt2}+\frac1{2+\sqrt2}=1~, \]

现在一切都简化了,我们的条件就转化为检测是否对所有 \(n>0\)

\[\left\{\frac{n+1}{\sqrt2}\right\}+\left\{\frac{n+1}{2+\sqrt2}\right\}=1~. \]

这样就成功了,因为这是和等于整数 \(n+1\) 的两个非整数的数的分数部分。这就是一个划分。

3.3 底和顶的递归式 FLOOR/CEILING RECURRENCES

底和顶为研究递归关系增添了一个有趣的新方向。我们先来研究递归式

\[\begin{aligned}&K_0=1~;\\&K_{n+1}=1+\min(2K_{\lfloor n/2\rfloor},3K_{\lfloor n/3\rfloor})~,\quad n\geqslant0~.\end{aligned}\tag{3.16}\label{3.16} \]

例如,\(K_1\) 就是 \(1+\min(2K_0,3K_0)=3\),此序列的开始部分是 \(1,3,3,4,7,7,7,9,9,10,13,\cdots\)。本书的作者之一将这些数称为高德纳数。

习题 25 要求证明或推翻如下命题:对所有 \(n\geqslant0\)\(K_n\geqslant n\)。刚刚列出来的前面若干个 \(K\) 的确满足这个不等式,所以很有可能它在一般情况下也为真。我们尝试用归纳法证明:基础 \(n=0\) 直接由递归式的定义得出。对于归纳部分,假设此不等式对直到某个非负整数 \(n\) 为止所有值都成立,我们来证明 \(K_{n+1}\geqslant n+1\)。由递归式可知 \(K_{n+1}=1+\min(2K_{\lfloor n/2\rfloor},3K_{\lfloor n/3\rfloor})\)。而由归纳假设知,\(2K_{\lfloor n/2\rfloor}\geqslant2\lfloor n/2\rfloor\)\(3K_{\lfloor n/3\rfloor}\geqslant3\lfloor n/3\rfloor\)。然而,\(2\lfloor n/2\rfloor\) 可以小到等于 \(n-1\)\(3\lfloor n/3\rfloor\) 可以小到等于 \(n-2\)。我们从归纳假设最多只能断定 \(K_{n+1}\geqslant1+(n-2)\),这与 \(K_{n+1}\geqslant n+1\) 相比还相差甚远。

现在我们有理由担心 \(K_n\geqslant n\) 的真实性,所以来尝试推翻它。如果能找到一个 \(n\),使得 \(2K_{\lfloor n/2\rfloor}<n\) 或者 \(3K_{\lfloor n/3\rfloor}<n\) 成立,换句话说,就是有

\[K_{\lfloor n/2\rfloor}<n/2\quad\text{或者}\quad K_{\lfloor n/3\rfloor}<n/3~, \]

我们就会有 \(K_{n+1}<n+1\)。这可能吗?我们最好不要在这里就给出答案,因为这样会破坏你做习题 25 的兴致。

含有底和顶的递归关系常常在计算机科学中出现,因为以重要的 “分而治之” 技术为基础的算法,会把一个大小为 \(n\) 的问题转化为一个大小是 \(n\) 的几分之一(整数)的类似问题。例如,如果 \(n>1\),给 \(n\) 个记录排序的一种方法是把它们分成两个近乎相等的部分,一部分的大小是 \(\lceil n/2\rceil\),而另一部分的大小是 \(\lfloor n/2\rfloor\)。(附带注意,有

\[n=\lceil n/2\rceil+\lfloor n/2\rfloor~,\tag{3.17}\label{3.17} \]

这个公式常常会派上用场。)在每一部分都被分别排序后(根据同样的方法,循环地使用),通过进一步做至多 \(n-1\) 次比较,就能将这些记录合并成最后的排序。这样一来,所执行比较的总数至多是 \(f(n)\),其中

\[\begin{aligned}&f(1)=0~;\\&f(n)=f(\lceil n/2\rceil)+f(\lfloor n/2\rfloor)+n-1~,\quad n>1~.\end{aligned}\tag{3.18}\label{3.18} \]

这个递归式的解在习题 34 中。

第 1 章的约瑟夫问题有一个类似的递归式,它可以表述成

\[\begin{aligned}&J(1)=1~;\\&J(n)=2J(\lfloor n/2\rfloor)-(-1)^n~,\quad n>1~.\end{aligned} \]

这是第一页没有涂鸦的吧?

我们已经有了比第 1 章更多的工具,所以可以考虑一个更真确的约瑟夫问题,其中每隔两个人就淘汰一个人,而不是每隔一个人淘汰一个人。如果将第 1 章里有成效的方法应用到这个更困难的问题上,我们最终会得到递归式

\[J_3(n)=\Bigg(\Bigg\lceil\frac32J_3\hspace{-0.25em}\left(\left\lfloor\frac23n\right\rfloor\right)+a_n\Bigg\rceil\bmod n\Bigg)+1~, \]

其中 \(\bmod\) 是我们即将探讨的一个函数,且根据 \(n\bmod3=0,1\) 或者 \(2\) 来决定 \(a_n=-2,+1\) 或者 \(-\dfrac12\)。但是这个递归式太可怕,无法进一步做下去。

有另一种探讨约瑟夫问题的方式能给出好得多的构造。只要有一个人被处死,我们就指定一个新的号码。这样一来,\(1\) 号和 \(2\) 号就变成 \(n+1\)\(n+2\),然后 \(3\) 号被处死,\(4\) 号和 \(5\) 号就变成 \(n+3\)\(n+4\),接下来 \(6\) 号被处死……\(3k+1\)\(3k+2\) 就变成 \(n+2k+1\)\(n+2k+2\),接下来 \(3k+3\) 被处死……然后是 \(3n\) 被处死(或者幸存下来)。例如,当 \(n=10\) 时号码是

\[\begin{array}{llllllllll}1&2&3&4&5&6&7&8&9&10\\11&12&&13&14&&15&16&&17\\18&&&19&20&&&21&&22\\&&&23&24&&&&&25\\&&&26&&&&&&27\\&&&28\\&&&29\\&&&30\end{array} \]

\(k\) 个被除掉的人的最终号码是 \(3k\)。所以,如果我们能算出标号为 \(3n\) 的人的原来号码,就可以算出谁是幸存者。

如果 \(N>n\),标号为 \(N\) 的人必定有一个以前的号码,我们可以这样将它求出来:我们有 \(N=n+2k+1\) 或者 \(N=n+2k+2\),于是 \(k=\big\lfloor(N-n-1)/2\big\rfloor\),前面的号码分别是 \(3k+1\) 或者 \(3k+2\)。那就是说,它是 \(3k+(N-n-2k)=k+N-n\)。从而可以计算出幸存者的号码 \(J_3(n)\) 如下:

\[\def\arraystretch{1.25}\begin{array}{l}N:=3n~;\\\textbf{while }~N>n~\textbf{ do}\quad N:=\left\lfloor\dfrac{N-n-1}2\right\rfloor+N-n~;\\J_3(n):=N~.\end{array} \]

这不是 \(J_3(n)\) 的封闭形式,甚至不是一个递归式,但它至少告诉我们,如果 \(n\) 很大,怎样用合理的速度计算出答案。

“不太慢,也不太快。” ——路易斯 · 阿姆斯特朗

幸运的是,如果我们用变量 \(D=3n+1-N\) 来替换 \(N\),就有一种办法来简化这个算法。(记号的这种改变对应于标号从 \(3n\) 下降到 \(1\),而不是从 \(1\) 上升到 \(3n\),它像倒计数。)此时对 \(N\) 的复杂赋值就变成

\[\begin{aligned}D&:=3n+1-\left(\left\lfloor\frac{(3n+1-D)-n-1}2\right\rfloor+(3n+1-D)-n\right)\\&=n+D-\left\lfloor\frac{2n-D}2\right\rfloor=D-\left\lfloor\frac{-D}2\right\rfloor=D+\left\lceil\frac D2\right\rceil=\left\lceil\frac32D\right\rceil,\end{aligned} \]

我们可以将算法重新改写成

\[\def\arraystretch{1.25}\begin{array}{l}D:=1~;\\\textbf{while }~D\leqslant2n~\textbf{ do}~~D:=\left\lceil\dfrac32D\right\rceil;\\J_3(n):=3n+1-D~.\end{array} \]

啊哈!这看起来要好得多了,因为 \(n\) 以一种非常简单的方式出现在计算中。事实上,我们可以用同样的推理证明:当每隔 \(q-1\) 个人就除掉一个人时,幸存者 \(J_q(n)\) 可以计算如下:

\[\def\arraystretch{1.25}\begin{array}{l}D:=1~;\\\textbf{while }~D\leqslant(q-1)n~\textbf{ do}~~D:=\left\lceil\dfrac q{q-1}D\right\rceil;\\J_q(n):=qn+1-D~.\end{array}\tag{3.19}\label{3.19} \]

在我们了解得非常清楚的 \(q=2\) 的情形下,当 \(n=2^m+l\) 时,这使得 \(D\) 增加到 \(2^{m+1}\),所以 \(J_2(n)=2(2^m+l)+1-2^{m+1}=2l+1\)。很好!

\(\eqref{3.19}\) 中的方法计算的是可以用下述递归式定义的整数序列:

\[\begin{aligned}D_0^{(q)}&=1~;\\D_n^{(q)}&=\left\lceil\frac q{q-1}D_{n-1}^{(q)}\right\rceil,\quad n>0~.\end{aligned}\tag{3.20}\label{3.20} \]

除了 \(q=2\) 以外,这些数看不出与任何熟悉的函数有简单关联方式,故而它们可能并没有好的封闭形式。但是,如果我们愿意将序列 \(D_n^{(q)}\) 看作是 “已知的”,那就容易描绘出一般的约瑟夫问题的解:幸存者 \(J_q(n)\)\(qn+1-D_k^{(q)}\),其中 \(k\) 是使得 \(D_k^{(q)}>(q-1)n\) 成立的尽可能小的数。

比方说,调和数这样 “已知的” 东西,A. M. Odlyzko 和 H. S. Wilf 已经证明了:\(D_n^{(3)}=\Bigg\lfloor\hspace{-0.15em}\left(\dfrac32\right)^nC\Bigg\rfloor\),其中 \(C=1.622~270~503\)

3.4 mod:二元运算 'MOD': THE BINARY OPERATION

\(m\)\(n\) 是正整数时,\(n\)\(m\) 除的商是 \(\lfloor n/m\rfloor\)。这个除法的余数也有一个简单的记号,很方便,我们称它是 “\(n\bmod m\)”。基本公式

\[n\quad=\quad m\underbrace{\lfloor n/m\rfloor}_\text{商}\quad+\quad\underbrace{n\bmod m}_\text{余数} \]

告诉我们,可以将 \(n\bmod m\) 表示成 \(n-m\lfloor n/m\rfloor\)。我们可以将它推广到负整数,实际上可以推广到任意实数:

\[x\bmod y\quad=\quad x-y\lfloor x/y\rfloor~,\quad y\ne0~.\tag{3.21}\label{3.21} \]

这就将 \(\bmod\) 定义为一个二元运算,正像加法和减法是二元运算一样。很长一段时间里,数学家们就是这样非正式地使用 \(\bmod\) 来取各种各样的量的,如 \(\bmod10\)\(\bmod2\pi\) 等,仅仅是在最近二十年才趋于正式使用。老概念,新记号。

为什么把它称为 \(\bmod\):二元运算?等待在激动人心的下一章去发现吧!

我们可以很容易就理解 \(x\bmod y\) 的直观意义:当 \(x\)\(y\) 是正实数时,想象一个周长为 \(y\) 的圆,它的点被赋予区间 \([0..y)\) 中的实数。如果我们从 \(0\) 出发,绕着圆行走距离 \(x\),我们就停止在 \(x\bmod y\)。(而在我们行走时遇到 \(0\) 的次数是 \(\lfloor x/y\rfloor\)。)

\(x\) 或者 \(y\) 是负数时,我们需要仔细观察定义,以便确切看出它的含义。这里是一些整值运算的例子:

要注意计算机语言,它用的是另一种定义。

\[\def\h{\hspace{0.25em}}\def\arraystretch{1.25}\begin{array}{lll}5\bmod3\h&=5-3\lfloor5/3\rfloor\h&=2~;\\5\bmod-3\h&=5-(-3)\big\lfloor5/(-3)\big\rfloor\h&=-1~;\\-5\bmod3\h&=-5-3\lfloor-5/3\rfloor\h&=1~;\\-5\bmod-3\h&=-5-(-3)\big\lfloor{-5}/(-3)\big\rfloor\h&=-2~.\end{array} \]

\(\bmod\) 后面的数称为(modulus),至今还没有人给 \(\bmod\) 前面的数取名。在应用中,模通常是正的,但是当模是负数时,这个定义也完全有意义。在这两种情形下,\(x\bmod y\) 的值都介于 \(0\) 和模之间:

把另一个数称为 modumor 怎么样?

\[\begin{aligned}&0\leqslant x\bmod y<y~,\quad y>0~;\\&0\geqslant x\bmod y>y~,\quad y<0~.\end{aligned} \]

\(y=0\) 呢?定义 \(\eqref{3.21}\) 对此情形没有给出定义,为了避免用零作除数,也为了完整起见,我们可以定义

\[x\bmod0=x~.\tag{3.22}\label{3.22} \]

这个约定保持这样的性质:\(x\bmod y\)\(x\) 永远相差 \(y\) 的一个倍数。(更自然的似乎是,通过定义 \(x\bmod0=\lim_{y\to0}x\bmod y=0\) 来使得这个函数在 \(0\) 处连续。但是我们将在第 4 章里看到这很少有用。连续性对模运算并不重要。)

当我们将 \(x\) 用它的整数部分和分数部分表示时,即 \(x=\lfloor x\rfloor+\{x\}\),就看到了 \(\bmod\) 经改头换面后的一个特殊情形。分数部分也可以写成 \(x\bmod1\),因为我们有

\[x=\lfloor x\rfloor+x\bmod1~. \]

注意,这个公式中不需要括号,因为我们约定 \(\bmod\) 比加法或者减法的优先级高。底函数用来定义 \(\bmod\),而顶函数尚不可。我们似乎可以用顶函数来定义一个像

\[x\,\operatorname{mumble}\,y=y\lceil x/y\rceil-x~,\quad y\ne0 \]

在 20 世纪 70 年代,\(\bmod\) 成了时尚。新的 \(\operatorname{mumble}\) 函数可能应该称为 \(\operatorname{punk}\)(无用的东西)?不,我喜欢 \(\operatorname{mumble}\)。注意,\(x\,\operatorname{mumble}\,y=(-x)\bmod y\)

这样与 \(\bmod\) 类似的东西。在用圆类比的结构中,这表示旅行者在走了一段距离 \(x\) 后,要回到起点 \(0\) 还需要继续走的距离。不过,我们当然需要一个比 \(\operatorname{mumble}\)(含糊说话)更好的名字。如果有足够多的应用随之而来,有可能它本身就会给出一个合适的名字。

分配律是 \(\bmod\) 最重要的代数性质。对所有实数 \(c\)\(x\)\(y\),我们有

\[c(x\bmod y)=(cx)\bmod(cy)~.\tag{3.23}\label{3.23} \]

(那些希望 \(\bmod\) 的优先级比乘法低的人也可以去掉这里右边的括号。)容易从定义 \(\eqref{3.21}\) 证明这个法则,因为如果 \(cy\ne0\),则有

\[c(x\bmod y)=c(x-y\lfloor x/y\rfloor)=cx-cy\lfloor cx/cy\rfloor=cx\bmod cy~, \]

且模为零的情形显然为真。我们的四个例子用 \(\pm5\)\(\pm3\) 两次给出了这个法则的例证(取 \(c=-1\))。像 \(\eqref{3.23}\) 这样的恒等式是鼓舞人心的,因为它使我们有理由相信 \(\bmod\) 的定义是恰当的。

在这一节的余下部分,我们要考虑一个应用,在其中能够表明 \(\bmod\) 是有助益的,尽管它并不起核心作用。这一问题在多种情形下频繁地出现:我们想要将 \(n\) 件物品尽可能相等地分成 \(m\) 组。

余数,呃?

例如,假设我们有短短的 \(n\) 行文本,希望把它们排成 \(m\) 列。为了有美感,我们希望将这些列排成行数递减的次序(实际上是不增的次序),而且行数要大致相同——没有哪两列相差多于一行。如果 \(37\) 行文本被分成 \(5\) 列,我们就会倾向于右边的安排:

\[\newcommand{\t}[1]{\text{第#1行}}\def\h{\hspace{2em}}\def\arraystretch{1.25}\begin{array}{cccccccccc}8&8&8&8&5\h&8&8&7&7&7\\\t1&\t9&\t{17}&\t{25}&\t{33}\h&\t1&\t9&\t{17}&\t{24}&\t{31}\\\t2&\t{10}&\t{18}&\t{26}&\t{34}\h&\t2&\t{10}&\t{18}&\t{25}&\t{32}\\\t3&\t{11}&\t{19}&\t{27}&\t{35}\h&\t3&\t{11}&\t{19}&\t{26}&\t{33}\\\t4&\t{12}&\t{20}&\t{28}&\t{36}\h&\t4&\t{12}&\t{20}&\t{27}&\t{34}\\\t5&\t{13}&\t{21}&\t{29}&\t{37}\h&\t5&\t{13}&\t{21}&\t{28}&\t{35}\\\t6&\t{14}&\t{22}&\t{30}&&\t6&\t{14}&\t{22}&\t{29}&\t{36}\\\t7&\t{15}&\t{23}&\t{31}&&\t7&\t{15}&\t{23}&\t{30}&\t{37}\\\t8&\t{16}&\t{24}&\t{32}&&\t8&\t{16}\end{array} \]

此外,我们想将各行文本按照列来分配,首先确定有多少行归入第一列,然后转到第二列,第三列,等等,因为这是人们阅读的方式。逐行配置会给出每一列中正确的行数,但是排序会是错的。(我们会得到右边这样的安排,但是第一列里将会包含第 \(1\)\(6\)\(11\)\(\cdots\)\(36\) 行,而不是所想要的第 \(1\)\(2\)\(3\)\(\cdots\)\(8\) 行。)

不能用逐行分配的策略,但是它的确告诉了我们在每一列里放多少行。如果 \(n\) 不是 \(m\) 的倍数,逐行配置的过程清楚地表明,长的列应该每列包含 \(\lceil n/m\rceil\) 行,而短的列应该每列包含 \(\lfloor n/m\rfloor\) 行。这就恰好有 \(n\bmod m\) 个长的列。(同样明显的是,恰好有 \(n\,\operatorname{mumble}\,m\) 个短的列。)

我们来推广这些术语,讨论 “物品” 和 “组”,而非 “行” 和 “列”。我们刚才确定了,第一组应该包含 \(\lceil n/m\rceil\) 件物品,于是这样的顺序分配方案应该有效:将 \(n\) 件物品分成 \(m\) 组,当 \(m>0\) 时,将 \(\lceil n/m\rceil\) 件物品放进第一组,然后循环利用同样的程序将剩下的 \(n'=n-\lceil n/m\rceil\) 件物品分成 \(m'=m-1\) 个另外的组。

例如,如果 \(n=314\)\(m=6\),则分配就如

\[\def\h{\hspace{2em}}\def\arraystretch{1.25}\begin{array}{ccc}\text{剩下的物品}\h&\text{剩下的组}\h&\big\lceil\text{物品/组}\big\rceil\\314\h&6\h&53\\261\h&5\h&53\\208\h&4\h&52\\156\h&3\h&52\\104\h&2\h&52\\52\h&1\h&52\end{array} \]

成功了。我们得到大小近似相等的组,尽管除数一直在变化。

为什么它会成功呢?一般来说,我们可以假设 \(n=qm+r\),其中 \(q=\lfloor n/m\rfloor\)\(r=n\bmod m\)。如果 \(r=0\),这个过程很简单:我们把 \(\lceil n/m\rceil=q\) 件物品放入第一组,并用 \(n'=n-q\) 替换 \(n\),而让 \(n'=qm'\) 件物品放进剩下的 \(m'=m-1\) 组中。如果 \(r>0\),我们就把 \(\lceil n/m\rceil=q+1\) 件物品放进第一组,并用 \(n'=n-q-1\) 替换 \(n\),而把 \(n'=qm'+r-1\) 件物品留给后面的组。新的余数是 \(r'=r-1\),但 \(q\) 仍然相同。由此得出,有 \(r\) 个组各有 \(q+1\) 件物品,接下来有 \(m-r\) 组各有 \(q\) 件物品。

在第 \(k\) 组中有多少件物品呢?我们希望有个公式,它在当 \(k\leqslant n\bmod m\) 时给出 \(\lceil n/m\rceil\),而在相反的情形则给出 \(\lfloor n/m\rfloor\)。不难验证,

\[\left\lceil\frac{n-k+1}m\right\rceil \]

就有所要的性质,因为如果在上一段里记 \(n=qm+r\),此式就化简成 \(q+\big\lceil(r-k+1)/m\big\rceil\),这里 \(q=\lfloor n/m\rfloor\)。如果 \(1\leqslant k\leqslant m\)\(0\leqslant r<m\),我们就有 \(\big\lceil(r-k+1)/m\big\rceil=[k\leqslant r]\)。这样一来,我们就可以写出一个恒等式,它表示出将 \(n\) 分成 \(m\) 个按照非增次序排列且尽可能相等的部分的划分:

\[n=\bigg\lceil\frac nm\bigg\rceil+\left\lceil\frac{n-1}m\right\rceil+\cdots+\left\lceil\frac{n-m+1}m\right\rceil.\tag{3.24}\label{3.24} \]

这个恒等式对所有正整数 \(m\) 且对所有整数 \(n\)(不论是正的、负的还是零)都成立。我们在 \(\eqref{3.17}\) 中已经遇到过 \(m=2\) 的情形,虽然那时将它写成了稍微不同的形式 \(n=\lceil n/2\rceil+\lfloor n/2\rfloor\)

如果我们曾经希望各个部分按照非减的次序排列,将小的组放在大的组的前面,我们就会用同样的方式做下去,不过要将 \(\lfloor n/m\rfloor\) 件物品放在第一组。这样我们就会得到相应的恒等式

\[n=\bigg\lfloor\frac nm\bigg\rfloor+\left\lfloor\frac{n+1}m\right\rfloor+\cdots+\left\lfloor\frac{n+m-1}m\right\rfloor.\tag{3.25}\label{3.25} \]

利用 \(\eqref{3.4}\) 或者习题 12 的恒等式,有可能在 \(\eqref{3.25}\)\(\eqref{3.24}\) 之间进行转换。

现在如果在 \(\eqref{3.25}\) 中用 \(\lfloor mx\rfloor\) 替换 \(n\),并应用规则 \(\eqref{3.11}\) 去掉底内部的底,我们就得到一个对所有实数 \(x\) 都成立的恒等式:

有人宣称:用 \(mx\) 来替换任何东西都是异常危险的。

\[\lfloor mx\rfloor=\lfloor x\rfloor+\left\lfloor x+\frac1m\right\rfloor+\cdots+\left\lfloor x+\frac{m-1}m\right\rfloor.\tag{3.26}\label{3.26} \]

这有点令人吃惊,因为底函数是实数值的整数近似值,但是左边的单个近似值等于右边一组数的和。如果我们假设 \(\lfloor x\rfloor\) 平均大致是 \(x-\dfrac12\),那么左边大致是 \(mx-\dfrac12\),而右边大致等于 \(\left(x-\dfrac12\right)+\left(x-\dfrac12+\dfrac1m\right)+\cdots+\left(x-\dfrac12+\dfrac{m-1}m\right)=mx-\dfrac12\),事实表明所有这些粗略近似值的和竟是精确的!

3.5 底和顶的和式 FLOOR/CEILING SUMS

方程 \(\eqref{3.26}\) 表明,对至少一类包含 \(\lfloor~\rfloor\) 的和式有可能得到封闭形式。还有其他的吗?是的。在这种情形下,行之有效的技巧常常是通过引入一个新的变量来规避底或者顶。

例如,我们来研究是否可能对和式

\[\sum_{0\leqslant k<n}\left\lfloor\sqrt k\right\rfloor \]

给出封闭形式。一种想法是引入变量 \(m=\left\lfloor\sqrt k\right\rfloor\),我们可以用在轮盘赌问题中的做法 “机械地” 解这个问题:

\[\begin{aligned}\sum_{0\leqslant k<n}\left\lfloor\sqrt k\right\rfloor&=\sum_{k,m\geqslant0}m[k<n]\bigg[m=\left\lfloor\sqrt k\right\rfloor\hspace{-0.15em}\bigg]\\&=\sum_{k,m\geqslant0}m[k<n][m\leqslant\sqrt k<m+1]\\&=\sum_{k,m\geqslant0}m[k<n][m^2\leqslant k<(m+1)^2]\\&=\sum_{k,m\geqslant0}m[m^2\leqslant k<(m+1)^2\leqslant n]\\&\phantom{=}+\sum_{k,m\geqslant0}m[m^2\leqslant k<n<(m+1)^2]~.\end{aligned} \]

边界条件再次有一点微妙。我们首先假设 \(n=a^2\) 是一个完全平方,这样,第二个和式就是零,而第一个和式可以用惯常的办法计算:

\[\begin{aligned}&\sum_{k,m\geqslant0}m[m^2\leqslant k<(m+1)^2\leqslant a^2]\\&\phantom{\sum_{k,m\geqslant0}}=\sum_{m\geqslant0}m\big((m+1)^2-m^2\big)[m+1\leqslant a]\\&\phantom{\sum_{k,m\geqslant0}}=\sum_{m\geqslant0}m(2m+1)[m<a]\\&\phantom{\sum_{k,m\geqslant0}}=\sum_{m\geqslant0}(2m^{\underline2}+3m^{\underline1})[m<a]\\&\phantom{\sum_{k,m\geqslant0}}=\sum\nolimits_0^a(2m^{\underline2}+3m^{\underline1})\delta m\\[-1ex]&\phantom{\sum_{k,m\geqslant0}}=\frac23a(a-1)(a-2)+\frac32a(a-1)=\frac16(4a+1)a(a-1)~.\end{aligned} \]

下降幂使得这个和式翻着跟斗落下来。

在一般情形下,我们可以设 \(a=\left\lfloor\sqrt n\right\rfloor\),这样就只需要再加上满足 \(a^2\leqslant k<n\) 的项,这些项全都等于 \(a\),故它们的和等于 \((n-a^2)a\)。这就给出了所要的封闭形式

\[\sum_{0\leqslant k<n}\left\lfloor\sqrt k\right\rfloor=na-\frac13a^3-\frac12a^2-\frac16a~,\quad a=\left\lfloor\sqrt n\right\rfloor.\tag{3.27}\label{3.27} \]

求这个和式的另一个方法是用 \(\sum_j[1\leqslant j\leqslant x]\) 代替形如 \(\lfloor x\rfloor\) 的表达式,只要 \(x\geqslant0\),这就是合理的。如果为方便起见,我们假设 \(n=a^2\),那么此方法在形如 \(\lfloor\text{平方根}\rfloor\) 的和式中有效,其原因是:

\[\begin{aligned}\sum_{0\leqslant k<n}\left\lfloor\sqrt k\right\rfloor&=\sum_{j,k}[1\leqslant j\leqslant\sqrt k][0\leqslant k<a^2]\\&=\sum_{1\leqslant j<a}\sum_k[j^2\leqslant k<a^2]\\&=\sum_{1\leqslant j<a}(a^2-j^2)=a^3-\frac13a\hspace{-0.2em}\left(a+\frac12\right)\hspace{-0.1em}(a+1)~.\end{aligned} \]

还有另一个例子,在其中做变量替换就会导出一个变形的和式。在 1909 年的大约同一时间,三位数学家 Bohl、Sierpiński 以及 Weyl 分别独立发现了这个著名的定理:如果 \(\alpha\) 是无理数,那么分数部分 \(\{n\alpha\}\)\(n\to\infty\) 时在 \(0\)\(1\) 之间是非常一致分布的。叙述这一点的一种方式是:对所有无理数 \(\alpha\) 以及所有几乎处处连续的有界函数 \(f\)

\[\lim_{n\to\infty}\frac1n\sum_{0\leqslant k<n}f\big(\{k\alpha\}\big)=\int_0^1f(x)~\mathrm dx~.\tag{3.28}\label{3.28} \]

例如,令 \(f(x)=x\),可以求得 \(\{n\alpha\}\)平均值,我们得到 \(\dfrac12\)。(这正是我们期待的,知道下面的结果也是令人愉快的:不论 \(\alpha\) 是什么样的无理数,这个结果都确实可以证明是正确的。)

Bohl、Sierpiński 以及 Weyl 的这个定理是用 “阶梯函数” 从上方以及下方逼近 \(f(x)\) 的方法证明的,阶梯函数是当 \(0\leqslant v\leqslant1\) 时简单函数

提醒:这部分内容比较高深,初次阅读时最好略过下面两页,它们并非至关重要。——友好的助教。

\[f_v(x)=[0\leqslant x<v] \]

的线性组合。在这里,我们的目的不是证明这个定理,那是微积分教程的任务。我们想要通过观察在特殊情形 \(f(x)=f_v(x)\) 下这个定理是多么成功,来指出它成立的根本原因。换句话说,尝试研究当 \(n\) 很大且 \(\alpha\) 是无理数时,和式

从此处开始略过。

\[\sum_{0\leqslant k<n}[\{k\alpha\}<v] \]

与 “理想的” 值 \(nv\) 有多么接近。

为此目的,我们定义偏差(discrepancy)\(D(\alpha,n)\) 是和式

\[s(\alpha,n,v)=\sum_{0\leqslant k<n}([\{k\alpha\}<v]-v)\tag{3.29}\label{3.29} \]

\(0\leqslant v\leqslant1\) 上的最大绝对值。我们的目的是通过证明当 \(\alpha\) 是无理数时 \(\big|s(\alpha,n,v)\big|\) 总是适当地小,从而证明 \(D(\alpha,n)\)\(n\) 相比 “不太大”。不失一般性,我们可以假设 \(0<\alpha<1\)

首先可以将 \(s(\alpha,n,v)\) 改写成更为简单的形式,然后引入一个新的指标变量 \(j\)

\[\begin{aligned}\sum_{0\leqslant k<n}([\{k\alpha\}<v]-v)&=\sum_{0\leqslant k<n}\big(\lfloor k\alpha\rfloor-\lfloor k\alpha-v\rfloor-v\big)\\&=-nv+\sum_{0\leqslant k<n}\sum_j[k\alpha-v<j\leqslant k\alpha]\\&=-nv+\sum_{0\leqslant j<\lceil n\alpha\rceil}\sum_{k<n}[j\alpha^{-1}\leqslant k<(j+v)\alpha^{-1}]~.\end{aligned} \]

如果运气好,我们就能求出关于 \(k\) 的和式。但是,我们应该引入一些新的变量,使这个公式不至于如此凌乱。我们记

正确,命名并求解。从 \(k\)\(j\) 的变量变换是要点。——友好的助教。

\[\begin{aligned}a&=\left\lfloor\alpha^{-1}\right\rfloor,\qquad\alpha^{-1}=a+\alpha'~;\\b&=\left\lceil v\alpha^{-1}\right\rceil,\quad\,v\alpha^{-1}=b-v'~.\end{aligned} \]

于是 \(\alpha'=\left\{\alpha^{-1}\right\}\)\(\alpha^{-1}\) 的分数部分,而 \(v'\) 则是 \(v\alpha^{-1}\)\(\operatorname{mumble}\) 分数部分。

再次,边界条件是我们仅有的苦难之源。让我们暂时忘掉限制 \(k<n\),并在去掉限制条件后计算关于 \(k\) 的和式:

\[\begin{aligned}\sum_k[k\in[j\alpha^{-1}..(j+v)\alpha^{-1})]&=\big\lceil(j+v)(a+\alpha')\big\rceil-\big\lceil j(a+\alpha')\big\rceil\\&=b+\left\lceil j\alpha'-v'\right\rceil-\left\lceil j\alpha'\right\rceil.\end{aligned} \]

好的,这太简单了,我们将它代入并努力做下去:

\[s(\alpha,n,v)=-nv+\lceil n\alpha\rceil b+\sum_{0\leqslant j<\lceil n\alpha\rceil}\left(\left\lceil j\alpha'-v'\right\rceil-\left\lceil j\alpha'\right\rceil\right)-S~,\tag{3.30}\label{3.30} \]

其中 \(S\) 是对我们未能排除的 \(k\geqslant n\) 情形所做的修正。量 \(j\alpha'\) 仅当 \(j=0\) 时是整数,由于 \(\alpha\)(从而 \(\alpha'\))是无理数,而 \(j\alpha'-v'\) 对至多一个 \(j\) 的值是整数。所以,我们可以将含有顶的项改变成含有底的项:

\[s(\alpha,n,v)=-nv+\lceil n\alpha\rceil b-\sum_{0\leqslant j<\lceil n\alpha\rceil}\left(\left\lfloor j\alpha'\right\rfloor-\left\lfloor j\alpha'-v'\right\rfloor\right)-S+\{0\text{ 或者 }1\}~, \]

(公式 \(\{0\text{ 或者 }1\}\) 表示其值是 \(0\) 或者 \(1\) 的某个东西。我们无需现在决定它的值,因为细节并不重要。)

这很有意思。我们得到的不是封闭形式,而是看起来像 \(s(\alpha,n,v)\) 却带有不同参数的东西:\(\alpha'\) 代替了 \(\alpha\)\(\lceil n\alpha\rceil\) 代替了 \(n\),而 \(v'\) 则代替了 \(v\)。所以我们就有一个关于 \(s(\alpha,n,v)\) 的递归式,(希望)它能引导出偏差 \(D(\alpha,n)\) 的递归式。这就是说,我们想将

\[s\hspace{-0.2em}\left(\alpha',\lceil n\alpha\rceil,v'\right)=\sum_{0\leqslant j<\lceil n\alpha\rceil}\left(\left\lfloor j\alpha'\right\rfloor-\left\lfloor j\alpha'-v'\right\rfloor-v'\right) \]

代入到

\[s(\alpha,n,v)=-nv+\lceil n\alpha\rceil b-\lceil n\alpha\rceil v'-s\hspace{-0.15em}\left(\alpha',\lceil n\alpha\rceil,v'\right)-S+\{0\text{ 或者 }1\} \]

中。回忆一下 \(b-v'=v\alpha^{-1}\),我们看到,如果用 \(n\alpha(b-v')=nv\) 代替 \(\lceil n\alpha\rceil(b-v')\),一切都会漂亮地得以简化:

\[s(\alpha,n,v)=-s\hspace{-0.15em}\left(\alpha',\lceil n\alpha\rceil,v'\right)-S+\varepsilon+\{0\text{ 或者 }1\}~. \]

这里 \(\varepsilon\) 是小于 \(v\alpha^{-1}\) 的正误差。习题 18 证明了:类似地,\(S\) 介于 \(0\)\(\left\lceil v\alpha^{-1}\right\rceil\) 之间。对于 \(j=\lceil n\alpha\rceil-1=\lfloor n\alpha\rfloor\),我们可以从和式中去掉这一项,因为它的贡献是 \(v'\) 或者 \(v'-1\)。因此,如果关于所有的 \(v\) 取绝对值的最大值,我们就得到

\[D(\alpha,n)\leqslant D\hspace{-0.15em}\left(\alpha',\lfloor\alpha n\rfloor\right)+\alpha^{-1}+2~.\tag{3.31}\label{3.31} \]

接下来几章里学习的方法将使我们从这个递归式得出结论:当 \(n\) 充分大时,\(D(\alpha,n)\) 总是比 \(n\) 要小得多。故而定理 \(\eqref{3.28}\) 为真,然而,它收敛于极限并不一定很快。(见习题 9.45 以及习题 9.61。)

略去阅读部分到此结束。

哇,这真是一个处理和式、底以及顶的出色练习了。不习惯于 “证明误差很小” 的读者或许会发现,很难相信还有人在面对这样看似古怪的和式时有继续前进的勇气。但实际上,再次审视就会发现,在整个计算过程中贯穿着一条简单的动机主线,其主要思想是:一种 \(n\) 项的和式 \(s(\alpha,n,v)\) 可以化简为至多有 \(\lceil\alpha n\rceil\) 项的一个类似的和式。除了只留下一小部分接近边界的项以外,其他的项都被抵消了。

我们稍作停顿,再来做一个和式,它不是平凡的,但(与我们刚刚做的相比较)有很大的好处:它的结果是一个封闭形式,这使得我们可以很容易验证答案。现在,我们的目的是找到下面和式的一个表达式:

这是底的更难的和式,还是更难的底的和式呢?

\[\sum_{0\leqslant k<m}\left\lfloor\frac{nk+x}m\right\rfloor,\quad\text{整数 }m>0\text{ 且 }n\text{ 为整数 }, \]

以此来推广 \(\eqref{3.26}\) 中的和式。对这个和式求一个封闭形式要比到目前为止我们做过的更困难一些(除了我们刚才观察的偏差问题之外)。但这是有益的,所以本章的余下部分就来解决这个问题。

事先提醒:这里开始出现一种新模式,按照这种模式,每章的最后部分会解答某些长而困难的问题,这需要一些思想的火花,而不是好奇心。——学生

言之有理,但是,亲爱的孩子们,在你们对某个东西感兴趣之前,是否总是需要有人告诉你们相关应用?例如,这个和式是在讨论随机数的生成和检验时出现的,但是数学家们在计算机出现前很早就注意它了。他们发现了就自然会问是否有一种方法来对 “被加了底括号的” 等差级数求和。——你们的指导老师

与通常一样,特别是对于棘手的问题,我们首先观察小的情形。\(n=1\) 的特殊情形就是 \(\eqref{3.26}\),在其中用 \(x/m\) 替换 \(x\)

\[\bigg\lfloor\frac xm\bigg\rfloor+\left\lfloor\frac{1+x}m\right\rfloor+\cdots+\left\lfloor\frac{m-1+x}m\right\rfloor=\lfloor x\rfloor~. \]

与第 1 章中一样,通过向下推广到 \(n=0\) 的情形来得到更多信息是有用的:

\[\bigg\lfloor\frac xm\bigg\rfloor+\bigg\lfloor\frac xm\bigg\rfloor+\cdots+\bigg\lfloor\frac xm\bigg\rfloor=m\bigg\lfloor\frac xm\bigg\rfloor. \]

我们的问题有两个参数 \(m\)\(n\),我们来观察 \(m\) 较小时的一些情形。当 \(m=1\) 时,和式中恰好只有一项且它的值为 \(\lfloor x\rfloor\)。当 \(m=2\) 时,这个和式是 \(\lfloor x/2\rfloor+\big\lfloor(x+n)/2\big\rfloor\)。通过在底函数的内部去掉 \(n\),我们可以去掉 \(x\)\(n\) 之间的相互作用,但是要这样做,我们必须将偶数的 \(n\) 和奇数的 \(n\) 分开来考虑。如果 \(n\) 是偶数,\(n/2\) 就是一个整数,所以能从底中将它去掉:

\[\bigg\lfloor\frac x2\bigg\rfloor+\bigg(\bigg\lfloor\frac x2\bigg\rfloor+\frac n2\bigg)=2\bigg\lfloor\frac x2\bigg\rfloor+\frac n2~. \]

如果 \(n\) 是奇数,\((n-1)/2\) 就是一个整数,故而得到

\[\bigg\lfloor\frac x2\bigg\rfloor+\bigg(\bigg\lfloor\frac{x+1}2\bigg\rfloor+\frac{n-1}2\bigg)=\lfloor x\rfloor+\frac{n-1}2~. \]

最后一步由 \(\eqref{3.26}\) 得出(取 \(m=2\))。

偶数和奇数 \(n\) 的这些公式有点像 \(n=0\)\(n=1\) 的那些公式,但是还没有出现清晰的模式,故而我们最好继续研究一些小的情形。对 \(m=3\),这个和式是

\[\bigg\lfloor\frac x3\bigg\rfloor+\bigg\lfloor\frac{x+n}3\bigg\rfloor+\bigg\lfloor\frac{x+2n}3\bigg\rfloor~, \]

\(n\) 我们考虑三种情形:它是 \(3\) 的倍数,它比 \(3\) 的倍数大 \(1\),或者它比 \(3\) 的倍数大 \(2\)。也就是说,\(n\bmod3=0,1\) 或者 \(2\)。如果 \(n\bmod3=0\),那么 \(n/3\)\(2n/3\) 是整数,故而和式为

\[\bigg\lfloor\frac x3\bigg\rfloor+\bigg(\bigg\lfloor\frac x3\bigg\rfloor+\frac n3\bigg)+\bigg(\bigg\lfloor\frac x3\bigg\rfloor+\frac{2n}3\bigg)=3\bigg\lfloor\frac x3\bigg\rfloor+n~. \]

如果 \(n\bmod3=1\),那么 \((n-1)/3\)\((2n-2)/3\) 是整数,所以有

\[\bigg\lfloor\frac x3\bigg\rfloor+\bigg(\bigg\lfloor\frac{x+1}3\bigg\rfloor+\frac{n-1}3\bigg)+\bigg(\bigg\lfloor\frac{x+2}3\bigg\rfloor+\frac{2n-2}3\bigg)=\lfloor x\rfloor+n-1~. \]

最后一步再次由 \(\eqref{3.26}\) 得出,这一次取 \(m=3\)。最后,如果 \(n\bmod3=2\),那么

\[\bigg\lfloor\frac x3\bigg\rfloor+\bigg(\bigg\lfloor\frac{x+2}3\bigg\rfloor+\frac{n-2}3\bigg)+\bigg(\bigg\lfloor\frac{x+1}3\bigg\rfloor+\frac{2n-1}3\bigg)=\lfloor x\rfloor+n-1~. \]

我们大脑的左半球完成了 \(m=3\) 的情形,但是右半球仍然未能辨认出其模式,所以还要继续做 \(m=4\)

“创造性的天才需要先进行愉悦的脑力活动才能进入激烈思辨的状态。‘需求是发明之母’ 是缺乏常识的俗话,而 ‘需求是无用托词之母’ 更接近于真理。现代发明的发展建立在科学发现的基础之上,而科学几乎就是愉悦的求知欲的结果。” ——怀特海

\[\bigg\lfloor\frac x4\bigg\rfloor+\bigg\lfloor\frac{x+n}4\bigg\rfloor+\bigg\lfloor\frac{x+2n}4\bigg\rfloor+\bigg\lfloor\frac{x+3n}4\bigg\rfloor. \]

到目前为止,我们至少已经了解要基于 \(n\bmod m\) 来考虑相应的情形。如果 \(n\bmod4=0\),那么

\[\bigg\lfloor\frac x4\bigg\rfloor+\bigg(\bigg\lfloor\frac x4\bigg\rfloor+\frac n4\bigg)+\bigg(\bigg\lfloor\frac x4\bigg\rfloor+\frac{2n}4\bigg)+\bigg(\bigg\lfloor\frac x4\bigg\rfloor+\frac{3n}4\bigg)=4\bigg\lfloor\frac x4\bigg\rfloor+\frac{3n}2~. \]

又如果 \(n\bmod4=1\),就有

\[\begin{aligned}\bigg\lfloor\frac x4\bigg\rfloor+\bigg(\bigg\lfloor\frac{x+1}4\bigg\rfloor+\frac{n-1}4\bigg)+\bigg(\bigg\lfloor\frac{x+2}4\bigg\rfloor+\frac{2n-2}4\bigg)+\bigg(\bigg\lfloor\frac{x+3}4\bigg\rfloor+\frac{3n-3}4\bigg)\\=\lfloor x\rfloor+\frac{3n}2-\frac32~.\phantom{n-3}\end{aligned} \]

事实表明,\(n\bmod4=3\) 的情形给出了同样的答案。最后,在 \(n\bmod4=2\) 的情形,我们得到稍微不同的结果,这是发掘其一般情形下性状的一条重要线索:

\[\begin{aligned}\bigg\lfloor\frac x4\bigg\rfloor+\bigg(\bigg\lfloor\frac{x+2}4\bigg\rfloor+\frac{n-2}4\bigg)+\bigg(\bigg\lfloor\frac x4\bigg\rfloor+\frac{2n}4\bigg)+\bigg(\bigg\lfloor\frac{x+2}4\bigg\rfloor+\frac{3n-2}4\bigg)\phantom{\frac x2\bigg\rfloor+\frac{3n}2-1.}\\=2\bigg(\bigg\lfloor\frac x4\bigg\rfloor+\bigg\lfloor\frac{x+2}4\bigg\rfloor\bigg)+\frac{3n}2-1=2\bigg\lfloor\frac x2\bigg\rfloor+\frac{3n}2-1~.\end{aligned} \]

最后一步对形如 \(\lfloor y/2\rfloor+\big\lfloor(y+1)/2\big\rfloor\) 的式子做了简化,它仍然是 \(\eqref{3.26}\) 的一个特殊情形。

总结一下,下表是 \(m\) 较小时和式的值。

\[\def\h{\hspace{2em}}\def\arraystretch{1.25}\begin{array}{c|llll}m&n\bmod m=0\h&n\bmod m=1\h&n\bmod m=2\h&n\bmod m=3\\\hline1&\phantom{n\,}\lfloor x\rfloor\\[0.5ex]2&\phantom{n\,}2\bigg\lfloor\dfrac x2\bigg\rfloor+\dfrac n2&\lfloor x\rfloor+\dfrac n2-\dfrac12\\[1ex]3&\phantom{n\,}3\bigg\lfloor\dfrac x3\bigg\rfloor+n&\lfloor x\rfloor+n-1&\lfloor x\rfloor+n-1\\[1ex]4&\phantom{n\,}4\bigg\lfloor\dfrac x4\bigg\rfloor+\dfrac{3n}2&\lfloor x\rfloor+\dfrac{3n}2-\dfrac32&2\bigg\lfloor\dfrac x2\bigg\rfloor+\dfrac{3n}2-1&\lfloor x\rfloor+\dfrac{3n}2-\dfrac32\end{array} \]

看起来,我们好像得到了形如

\[a\bigg\lfloor\frac xa\bigg\rfloor+bn+c \]

的结果,其中 \(a\)\(b\)\(c\) 以某种方式依赖于 \(m\)\(n\)。即便是缺乏辨别力的人也能看出,\(b\) 大概是 \((m-1)/2\),辨认出 \(a\) 的表达式更为困难,但是 \(n\bmod4=2\) 的情形给了我们暗示:\(a\) 大概是 \(m\)\(n\) 的最大公因子 \(\gcd(m,n)\)。这很有意义,因为 \(\gcd(m,n)\) 是将分数 \(n/m\) 化为最简分数时从 \(m\)\(n\) 中去掉的因子,而和式包含分数 \(n/m\)。(第 4 章将详细探讨 \(\gcd\) 运算。)\(c\) 的值看来更加神秘莫测,但是可能会从对于 \(a\)\(b\) 的证明中自动显现出来。

在对小的 \(m\) 计算和式时,我们将这个和式的每一项有效地改写为

\[\bigg\lfloor\frac{x+kn}m\bigg\rfloor=\bigg\lfloor\frac{x+kn\bmod m}m\bigg\rfloor+\frac{kn}m-\frac{kn\bmod m}m~, \]

因为 \((kn-kn\bmod m)/m\) 是一个可以从底括号内部去掉的整数,因此原来的和式可以展开成如下场景

\[\begin{aligned}\bigg\lfloor\frac xm\bigg\rfloor&+\frac0m-\frac{0\bmod m}m\\+\bigg\lfloor\frac{x+n\bmod m}m\bigg\rfloor&+\frac nm-\frac{n\bmod m}m\\+\bigg\lfloor\frac{x+2n\bmod m}m\bigg\rfloor&+\frac{2n}m-\frac{2n\bmod m}m\\\vdots\phantom{\lfloor\!\!x+2n\bmod }\vdots\phantom{~\!\!m\rfloor}&\phantom{+2n-\!}\vdots\\+\bigg\lfloor\frac{x+(m-1)n\bmod m}m\bigg\rfloor&+\frac{(m-1)n}m-\frac{(m-1)n\bmod m}m~.\end{aligned} \]

当我们用小的 \(m\) 值来计算时,这三列分别得出 \(a\lfloor x/a\rfloor\)\(bn\) 以及 \(c\)

特别地,我们可以看到 \(b\) 是如何出现的。第二列是一个等差级数,它的和是第一项和最后一项的平均乘以项数:

\[\frac12\hspace{-0.1em}\left(0+\frac{(m-1)n}m\right)\times m=\frac{(m-1)n}2~. \]

故而,我们猜测 \(b=(m-1)/2\) 就得到了验证。

第一列和第三列看起来更困难一些。要确定 \(a\)\(c\),必须更仔细地观察数列

\[0\bmod m,\quad n\bmod m,\quad2n\bmod m,\quad\cdots,\quad(m-1)n\bmod m~. \]

例如,假设 \(m=12\)\(n=5\)。如果我们把这个数列看成钟表上的时间,那么这些数就是 \(0\) 点钟(我们把 \(12\) 点钟视为 \(0\) 点钟),然后是 \(5\) 点钟、\(10\) 点钟、\(3\) 点钟(= \(15\) 点钟)、\(8\) 点钟,等等。于是,我们恰好每小时敲一次钟。

现在假设 \(m=12\)\(n=8\)。这些数就是 \(0\) 点钟、\(8\) 点钟、\(4\) 点钟(= \(16\) 点钟),此后 \(0\)\(8\)\(4\) 再次重复。由于 \(8\)\(12\) 都是 \(4\) 的倍数,又因为这些数以 \(0\) 为起点(它也是 \(4\) 的倍数),故而无法跳出这一模式——它们必须都是 \(4\) 的倍数。

在这两种情形下,我们有 \(\gcd(12,5)=1\)\(\gcd(12,8)=4\)。下一章将要证明的一般法则说明,如果 \(d=\gcd(m,n)\),则得到按照某种次序排列的数 \(0,d,2d,\cdots m-d\),接下来是同一数列的另外 \(d-1\) 次复制。例如,对 \(m=12\) 以及 \(n=8\),模式 \(0,8,4\) 出现 \(4\) 次。

和式的第一列现在有了完整的意义。它包含项(按照某种次序)\(\lfloor x/m\rfloor,\big\lfloor(x+d)/m\big\rfloor,\cdots\,\!,\big\lfloor(x+m-d)/m\big\rfloor\)\(d\) 份复制,所以它的和是

现在是引理(lemma),往后就是困境(dilemma)。

\[\begin{aligned}&d\bigg(\bigg\lfloor\frac xm\bigg\rfloor+\bigg\lfloor\frac{x+d}m\bigg\rfloor+\cdots+\bigg\lfloor\frac{x+m-d}m\bigg\rfloor\bigg)\\&\phantom{d(\lfloor}=d\bigg(\bigg\lfloor\frac{x/d}{m/d}\bigg\rfloor+\bigg\lfloor\frac{x/d+1}{m/d}\bigg\rfloor+\cdots+\bigg\lfloor\frac{x/d+m/d-1}{m/d}\bigg\rfloor\bigg)\\&\phantom{d(\lfloor}=d\bigg\lfloor\frac xd\bigg\rfloor.\end{aligned} \]

这最后一步也是 \(\eqref{3.26}\) 的另一个应用。我们对 \(a\) 的猜测就得到了验证:

\[a=d=\gcd(m,n)~. \]

如我们所猜测的,现在也能计算 \(c\) 了,因为第三列已经变得易于理解。它包含等差级数 \(0/m,d/m,2d/m,\cdots\,\!,(m-d)/m\)\(d\) 份复制,所以它的和是

\[d\Bigg(\frac12\left(0+\frac{m-d}m\right)\times\frac md\Bigg)=\frac{m-d}2~. \]

第三列实际上是被减去而不是被加上的,所以有

\[c=\frac{d-m}2~. \]

谜题结束了,探求也完成了。所要求的封闭形式就是

\[\sum_{0\leqslant k<m}\left\lfloor\frac{nk+x}m\right\rfloor=d\bigg\lfloor\frac xd\bigg\rfloor+\frac{m-1}2n+\frac{d-m}2~, \]

其中 \(d=\gcd(m,n)\)。检验一下,我们可以确信它在特殊情形 \(n=0\)\(n=1\) 成立,这是我们以前就知道的。当 \(n=0\) 时,我们得到 \(d=\gcd(m,0)=m\),此公式的最后两项是零,所以正确得出 \(m\lfloor x/m\rfloor\);而当 \(n=1\) 时,我们得到 \(d=\gcd(m,1)=1\),最后两项正好抵消,故而和正好是 \(\lfloor x\rfloor\)

对封闭形式稍作处理,实际上可以使得它关于 \(m\)\(n\) 对称:

\[\begin{align}\sum_{0\leqslant k<m}\left\lfloor\frac{nk+x}m\right\rfloor&=d\bigg\lfloor\frac xd\bigg\rfloor+\frac{m-1}2n+\frac{d-m}2\notag\\&=d\bigg\lfloor\frac xd\bigg\rfloor+\frac{(m-1)(n-1)}2+\frac{m-1}2+\frac{d-m}2\notag\\&=d\bigg\lfloor\frac xd\bigg\rfloor+\frac{(m-1)(n-1)}2+\frac{d-1}2~.\tag{3.32}\label{3.32}\end{align} \]

这令人吃惊,因为从代数角度没有理由来推测这样一个和式会是对称的。我们已经证明了 “互反律”:

是的,我很惊奇(floored)。

\[\sum_{0\leqslant k<m}\left\lfloor\frac{nk+x}m\right\rfloor=\sum_{0\leqslant k<n}\left\lfloor\frac{mk+x}n\right\rfloor,\quad\text{整数 }m,n>0~. \]

例如,如果 \(m=41\)\(n=127\),则左边的和式有 \(41\) 项,而右边的和式有 \(127\) 项,但是对所有的实数 \(x\),它们仍然相等。

习题

热身题

  1. 我们在第 1 章分析约瑟夫问题时,将任意一个正整数 \(n\) 表示成了 \(n=2^m+l\) 的形式,其中 \(0\leqslant l<2^m\)。请利用底括号或者顶括号,给出将 \(l\)\(m\) 表示成为 \(n\) 的函数的显式公式。

  2. 与一个给定实数 \(x\) 距离最近的整数的公式是什么?在对等的情形下,\(x\) 恰好在两个整数的中间位置,请给出一个表达式,它(a)往上舍入成整数,即成为 \(\lceil x\rceil\);(b)向下舍入成整数,即成为 \(\lfloor x\rfloor\)

  3. \(m\)\(n\) 是正整数,且 \(\alpha\) 是大于 \(n\) 的无理数时,计算 \(\big\lfloor\lfloor m\alpha\rfloor n/\alpha\big\rfloor\)

  4. 正文里描述了从水平 1 到水平 5 的问题。水平 0 是什么问题呢?(顺便说一句,这道题不是水平 0 的问题。)

  5. \(n\) 是正整数时,求使得 \(\lfloor nx\rfloor=n\lfloor x\rfloor\) 成立的必要充分条件。(你的条件应该包含 \(\{x\}\)。)

  6. \(f(x)\) 是仅当 \(x\) 为整数时才取整数值的连续单调递减函数时,关于 \(\big\lfloor f(x)\big\rfloor\) 有什么可谈的吗?

  7. 解递归式

    \[\begin{aligned}X_n&=n~,\quad0\leqslant n<m~;\\X_n&=X_{n-m}+1~,\quad n\geqslant m~.\end{aligned} \]

  8. 证明狄利克雷抽屉原理:如果 \(n\) 个物体放进 \(m\) 个盒子中,那么某个盒子中必定含有 \(\geqslant\lceil n/m\rceil\) 个物体,且有某个盒子中必定含有 \(\leqslant\lfloor n/m\rfloor\) 个物体。

    你知道的,大学课本里没有告诉你如何正确读出 Dirichlet。

  9. 埃及数学家在公元前 1800 年就把 \(0\)\(1\) 之间的有理数表示成了单位分数之和 \(1/x_1+\cdots+1/x_k\),其中诸 \(x\) 是不同的正整数。例如,他们将 \(\dfrac25\) 写成 \(\dfrac13+\dfrac1{15}\)。证明,总可以用一种系统化方法来这样做:如果 \(0<m/n<1\),那么

    \[\frac mn=\frac1q+\left\{\frac mn-\frac1q\text{的表示}\right\},\quad q=\bigg\lceil\frac nm\bigg\rceil~. \]

    (这是斐波那契算法,它归功于斐波那契,公元 1202 年。)

基础题

  1. 证明,表达式

    \[\left\lceil\frac{2x+1}2\right\rceil-\left\lceil\frac{2x+1}4\right\rceil+\left\lfloor\frac{2x+1}4\right\rfloor \]

    总是等于 \(\lfloor x\rfloor\) 或者 \(\lceil x\rceil\)。每一种情形会在何时出现?

  2. 给出正文中提及的证明细节:当 \(\alpha<\beta\) 时,开区间 \((\alpha..\beta)\) 恰好包含 \(\lceil\beta\rceil-\lfloor\alpha\rfloor-1\) 个整数。为使证明正确,为什么 \(\alpha=\beta\) 的情形必须排除在外?

  3. 证明,对所有整数 \(n\) 和所有正整数 \(m\)

    \[\bigg\lceil\frac nm\bigg\rceil=\bigg\lfloor\frac{n+m-1}m\bigg\rfloor~. \]

    (这个恒等式给出了另一种将顶与底相互转化的方法,它用不到反射律 \(\eqref{3.4}\)。)

  4. \(\alpha\)\(\beta\) 是正实数。证明:\(\operatorname{Spec}(\alpha)\)\(\operatorname{Spec}(\beta)\) 给出了正整数的划分,当且仅当 \(\alpha\)\(\beta\) 是无理数且 \(1/\alpha+1/\beta=1\)

  5. 证明或推翻

    \[(x\bmod ny)\bmod y=x\bmod y~,\quad n\text{ 为整数}. \]

  6. 存在与 \(\eqref{3.26}\) 类似的用顶替代底的恒等式吗?

  7. 证明 \(n\bmod2=\big(1-(-1)^n\big)/2\)。对 \(n\bmod3\) 求出并证明类似的形如 \(a+b\omega^n+c\omega^{2n}\) 的表达式,其中 \(\omega\) 是复数 \((-1+\mathrm i\sqrt3)/2\)提示\(\omega^3=1\)\(1+\omega+\omega^2=0\)

  8. \(x\geqslant0\) 的情形下,通过用 \(\sum_j[1\leqslant j\leqslant x+k/m]\) 替换 \(\lfloor x+k/m\rfloor\) 并首先对 \(k\) 求和,来计算和式 \(\sum_{0\leqslant k<m}\lfloor x+k/m\rfloor\)。你的答案与 \(\eqref{3.26}\) 吻合吗?

  9. 证明:\(\eqref{3.30}\) 中边界值的误差项 \(S\) 至多是 \(\left\lceil\alpha^{-1}v\right\rceil\)提示:证明小的 \(j\) 值不涉及其中。

作业题

  1. 求出关于实数 \(b>1\) 的一个必要充分条件,使得

    \[\lfloor\log_bx\rfloor=\big\lfloor\log_b\lfloor x\rfloor\big\rfloor \]

    对所有实数 \(x\geqslant1\) 都成立。

  2. \(x>0\) 时,求闭区间 \([\alpha..\beta]\)\(x\) 的所有倍数之和。

  3. \(0\leqslant m\leqslant M\),有多少个数 \(2^m\) 的十进制表示中,其首位数字为 \(1\)

  4. 计算和式 \(S_n=\sum_{k\geqslant1}\left\lfloor n/2^k+\dfrac12\right\rfloor\) 以及 \(T_n=\sum_{k\geqslant1}2^k\hspace{-0.2em}\left\lfloor n/2^k+\dfrac12\right\rfloor^2\)

  5. 证明序列

    \[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,\cdots \]

    的第 \(n\) 个元素是 \(\left\lfloor\sqrt{2n}+\dfrac12\right\rfloor\)。(这个序列恰好包含 \(m\)\(m\)。)

  6. \(\alpha\) 是任何一个 \(>1\) 的无理数时,因为 \(1/\alpha+(\alpha-1)/\alpha=1\),习题 13 在两个多重集合 \(\operatorname{Spec}(\alpha)\)\(\operatorname{Spec}\hspace{-0.2em}\big(\alpha/(\alpha-1)\big)\) 之间建立起有趣的关系。当 \(\alpha\) 是任何一个正实数时,找出(并且证明)两个多重集合 \(\operatorname{Spec}(\alpha)\)\(\operatorname{Spec}\hspace{-0.2em}\big(\alpha/(\alpha+1)\big)\) 之间的有趣的关系。

  7. 证明或推翻:对所有非负的 \(n\),由 \(\eqref{3.16}\) 所定义的高德纳数满足 \(K_n\geqslant n\)

  8. 证明:辅助的约瑟夫数 \(\eqref{3.20}\) 满足

    \[\left(\frac q{q-1}\right)^n\leqslant D_n^{(q)}\leqslant q\left(\frac q{q-1}\right)^n,\quad n\geqslant0~. \]

  9. 证明:由 \(\eqref{3.20}\) 定义的数 \(D_n^{(3)}\) 中有无穷多个是偶数,有无穷多个是奇数。

  10. 求解递归式

    \[\begin{aligned}a_0&=1~;\\a_n&=a_{n-1}+\left\lfloor\sqrt{a_{n-1}}\right\rfloor,\quad n>0~.\end{aligned} \]

    这个公式与 \(\eqref{3.31}\) 之间有偏差。

  11. 作为对 \(\eqref{3.31}\) 的补充,证明有

    \[D(\alpha,n)\geqslant D(\alpha',\lfloor\alpha n\rfloor)-\alpha^{-1}-2~. \]

  12. 证明,如果 \(m\) 是一个大于 \(2\) 的整数,其中 \(\alpha+\alpha^{-1}=m\)\(\alpha>1\),那么递归式

    \[\begin{aligned}X_0&=m~,\\X_n&=X_{n-1}^2-2~,\quad n>0~.\end{aligned} \]

    有解 \(X_n=\left\lceil\alpha^{2^n}\right\rceil\)。例如,如果 \(m=3\),则解为

    \[X_n=\left\lceil\phi^{2^{n+1}}\right\rceil,\quad\phi=\frac{1+\sqrt5}2~,\quad\alpha=\phi^2~. \]

  13. 证明或推翻:\(\lfloor x\rfloor+\lfloor y\rfloor+\lfloor x+y\rfloor\leqslant\lfloor 2x\rfloor+\lfloor2y\rfloor\)

  14. \(\|x\|=\min(x-\lfloor x\rfloor,\lceil x\rceil-x)\) 表示 \(x\) 到离它最近的整数之距离。

    \[\sum_k2^k\left\|x/2^k\right\|^2 \]

    的值是什么?(注意,这个和式可能是双向无限的。例如,当 \(x=1/3\) 时,其中的项当 \(k\to-\infty\) 时是非零的,且当 \(k\to+\infty\) 时亦然。)

考试题

  1. 一个直径为 \(2n-1\) 个单位长的圆对称地画在一个 \(2n\times2n\) 棋盘上,图中画出的是 \(n=3\) 时的情形。

    image

    a 棋盘上有多少个格子包含这个圆的一段?

    b 求一个函数 \(f(n,k)\),使得棋盘上恰有 \(\sum_{k=1}^{n-1}f(n,k)\) 个格子完全在这个圆的内部。

  2. \(f(n)=\sum_{k=1}^n\lceil\lg k\rceil\)

    a\(n\geqslant1\) 时,求 \(f(n)\) 的封闭形式。

    b 证明:对所有 \(n\geqslant1\)\(f(n)=n-1+f(\lceil n/2\rceil)+f(\lfloor n/2\rfloor)\)

  3. 化简公式 \(\left\lfloor(n+1)^2n!\mathrm e\right\rfloor\bmod n\)

    化简它,但是不要改变它的值。

  4. 假设 \(n\) 是一个非负整数,对和式

    \[\sum_{1<k<2^{2^n}}\frac1{2^{\lfloor\lg k\rfloor}4^{\lfloor\lg\lg k\rfloor}} \]

    求封闭形式。

  5. 对所有正整数 \(m\)\(n\) 证明恒等式

    \[\sum_{0\leqslant k<m}\bigg(\bigg\lfloor\frac{m+k}n\bigg\rfloor-\bigg\lfloor\frac kn\bigg\rfloor\bigg)=\bigg\lfloor\frac{m^2}n\bigg\rfloor-\Bigg\lfloor\frac{\min(m\bmod n,(-m)\bmod n)^2}n\Bigg\rfloor. \]

  6. \(x_1,\cdots\,\!,x_n\) 是使得恒等式

    \[\sum_{k=1}^n\left\lfloor mx_k\right\rfloor=\left\lfloor m\sum_{1\leqslant k\leqslant n}x_k\right\rfloor \]

    对所有正整数 \(m\) 都成立的实数。证明与 \(x_1,\cdots\,\!,x_n\) 有关的某种有意思的结论。

  7. 证明:对每个实数 \(x\geqslant1\) 以及每个整数 \(b>1\),双重和式 \(\sum_{0\leqslant k\leqslant\log_bx}\sum_{0<j<b}\left\lceil(x+jb^k)/b^{k+1}\right\rceil\) 等于 \((b-1)(\left\lfloor\log_bx\right\rfloor+1)+\lceil x\rceil-1\)

  8. 图中所示的螺旋函数 \(\sigma(n)\) 把一个非负整数 \(n\) 映射成一个有序整数对 \(\big(x(n),y(n)\big)\)。例如,它把 \(n=9\) 映上地映射成有序对 \((1,2)\)

    南半球的人用不同的螺旋线。

    a 证明:如果 \(m=\left\lfloor\sqrt n\right\rfloor\),那么

    \[x(n)=(-1)^m\hspace{-0.25em}\left(\hspace{-0.2em}\big(n-m(m+1)\big)\times\Big[\left\lfloor2\sqrt n\right\rfloor\text{是偶数}\Big]+\left\lceil\frac12m\right\rceil\right)~, \]

    再求一个与 \(y(n)\) 类似的公式。提示:将此螺旋线根据 \(\left\lfloor2\sqrt n\right\rfloor=4k-2,4k-1,4k,4k+1\) 分成线段 \(W_k,S_k,E_k,N_k\)

    b 反过来证明:我们可以通过一个形如

    \[n=(2k)^2\pm\big(2k+x(n)+y(n)\big)~,\quad k=\max\big(\big|x(n)\big|,\big|y(n)\big|\big) \]

    的公式从 \(\sigma(n)\) 确定出 \(n\)。给出一个法则来判断何时符号为 \(+\),何时符号为 \(-\)

附加题

  1. \(f\)\(g\) 是递增函数,它们使得集合 \(\big\{f(1),f(2),\cdots\big\}\)\(\big\{g(1),g(2),\cdots\big\}\) 是正整数的划分。假设 \(f\)\(g\) 由条件 \(g(n)=f\big(f(n)\big)+1\) 相联系(对所有 \(n>0\))。证明 \(f(n)=\lfloor n\phi\rfloor\)\(g(n)=\left\lfloor n\phi^2\right\rfloor\),其中 \(\phi=(1+\sqrt5)/2\)

  2. 是否存在实数 \(\alpha\)\(\beta\)\(\gamma\),使得 \(\operatorname{Spec}(\alpha)\)\(\operatorname{Spec}(\beta)\)\(\operatorname{Spec}(\gamma)\) 合起来给出正整数集合的划分?

  3. 通过展开递归式 \(\eqref{3.16}\),寻求高德纳数的一个有趣的解释。

  4. 证明存在 \(a_n^{(q)}\)\(d_n^{(q)}\),使得当 \(D_n^{(q)}\)\(\eqref{3.20}\) 的解时有

    \[a_n^{(q)}=\frac{D_{n-1}^{(q)}+d_n^{(q)}}{q-1}=\frac{D_n^{(q)}+d_n^{(q)}}q~,\quad n>0~. \]

    利用这一事实来得出推广的约瑟夫问题

    \[J_q(n)=1+d_k^{(q)}+q(n-a_k^{(q)})~,\quad a_k^{(q)}\leqslant n<a_{k+1}^{(q)} \]

    的另一种形式的解。

  5. 如果 \(m\) 是一个正整数,推广习题 30 的技巧来求

    \[\begin{aligned}Y_0&=m~,\\Y_n&=2Y_{n-1}^2-1~,\quad n>0\end{aligned} \]

    的封闭形式的解。

  6. 证明,如果 \(n=\left\lfloor(\sqrt2^l+\sqrt2^{l-1})m\right\rfloor\)(其中 \(m\)\(l\) 是非负整数),那么 \(\left\lfloor\sqrt{2n(n+1)}\right\rfloor=\left\lfloor(\sqrt2^{l+1}+\sqrt2^l)m\right\rfloor\)。利用这个非同寻常的性质求递归式

    \[\begin{aligned}L_0&=a~,\quad\text{整数 }a>0~;\\L_n&=\left\lfloor\sqrt{2L_{n-1}(L_{n-1}+1)}\right\rfloor,\quad n>0\end{aligned} \]

    的封闭形式的解。提示\(\left\lfloor\sqrt{2n(n+1)}\right\rfloor=\Bigg\lfloor\sqrt2\left(n+\dfrac12\right)\hspace{-0.25em}\Bigg\rfloor\)

  7. 函数 \(f(x)\) 说成是多次复现的(replicative),如果对每个正整数 \(m\),它都满足

    \[f(mx)=f(x)+f\hspace{-0.2em}\left(x+\frac1m\right)+\cdots+f\hspace{-0.2em}\left(x+\frac{m-1}m\right). \]

    求实数 \(c\) 所应满足的必要且充分条件,使得下列函数是多次复现的:

    a \(f(x)=x+c~.\)

    b \(f(x)=[x+c\text{ 是整数}]~.\)

    c \(f(x)=\max(\lfloor x\rfloor,c)~.\)

    d \(f(x)=x+c\lfloor x\rfloor-\dfrac12[x\text{ 不是整数}]~.\)

  8. 证明恒等式

    \[x^3=3x\big\lfloor x\lfloor x\rfloor\big\rfloor+3\{x\}\big\{x\lfloor x\rfloor\big\}+\{x\}^3-3\lfloor x\rfloor\big\lfloor x\lfloor x\rfloor\big\rfloor+\lfloor x\rfloor^3~, \]

    并指出当 \(n>3\) 时怎样对 \(x^n\) 得到一个类似的公式。

  9. 求关于实数 \(0\leqslant\alpha<1\) 以及 \(\beta\geqslant0\) 的必要且充分条件,使得我们可以从取值为

    \[\big\{\lfloor n\alpha\rfloor+\lfloor n\beta\rfloor~\big|~n>0\big\} \]

    的无限多重集合来确定 \(\alpha\)\(\beta\)

研究题

  1. 求关于非负实数 \(\alpha\)\(\beta\) 的必要且充分条件,使得我们可以从取值为

    \[\Big\{\big\lfloor\lfloor n\alpha\rfloor\beta\big\rfloor~\Big|~n>0\Big\} \]

    的无限多重集合确定 \(\alpha\)\(\beta\)

  2. \(x\) 是一个 \(\geqslant\phi=\dfrac12(1+\sqrt5)\) 的实数。如果 \(x\) 是一个整数,那么递归式

    \[\begin{aligned}Z_0(x)&=x~,\\Z_n(x)&=Z_{n-1}(x)^2-1~,\quad n>0\end{aligned} \]

    的解可以写成 \(Z_n(x)=\left\lceil f(x)^{2^n}\right\rceil\),其中

    \[f(x)=\lim_{n\to\infty}Z_n(x)^{1/2^n}~, \]

    因为在此情形有 \(Z_n(x)-1<f(x)^{2^n}<Z_n(x)\)。这个函数 \(f(x)\) 还有其他什么有趣的性质吗?

  3. 给定非负实数 \(\alpha\)\(\beta\),设

    \[\operatorname{Spec}(\alpha;\beta)=\big\{\lfloor\alpha+\beta\rfloor,\lfloor2\alpha+\beta\rfloor,\lfloor3\alpha+\beta\rfloor,\cdots\big\} \]

    是一个多重集合,它推广了 \(\operatorname{Spec}(\alpha)=\operatorname{Spec}(\alpha;0)\)。证明或推翻:如果 \(m\geqslant3\) 个多重集合 \(\operatorname{Spec}(\alpha_1;\beta_1),\operatorname{Spec}(\alpha_2;\beta_2),\cdots\,\!,\operatorname{Spec}(\alpha_m;\beta_m)\) 给出正整数的划分,又如果参数 \(\alpha_1<\alpha_2<\cdots<\alpha_m\) 是有理数,那么

    预计(spec)这个研究题很困难。

    \[\alpha_k=\frac{2^m-1}{2^{k-1}}~,\quad1\leqslant k\leqslant m~. \]

  4. 斐波那契算法(习题 9)在下述意义下是贪婪的(greedy):在每一步它选择一个可以想象到的最小的 \(q\)。已知一种更为复杂的算法,根据这一算法每个 \(n\) 为奇数的分数 \(m/n\) 都可以表示成分母为奇数的不同的单位分数之和 \(1/q_1+\cdots+1/q_k\)。对这样的表示,贪婪算法总是会终止的吗?

posted @ 2024-08-20 23:27  Laoshan_PLUS  阅读(125)  评论(0)    收藏  举报