整数是离散数学的支柱, 我们常常需要将分数或者任意的实数转换成整数. 本章的目的就是熟悉并熟练掌握这样的转换.
本篇笔记并不是单纯抄书上的公式. 对例题的推演增加自己的理解步骤.
3.1 顶和底
对于所有的实数,有如下定义:
(3.1)⌊x⌋小于或者等于x的最大整数;⌈x⌉大于或者等于x的最小整数; \tag{3.1} \lfloor x \rfloor {\footnotesize 小于或者等于x的最大整数};\\ \lceil x \rceil {\footnotesize 大于或者等于x的最小整数}; ⌊x⌋小于或者等于x的最大整数;⌈x⌉大于或者等于x的最小整数;(3.1)
看一下正值函数的图形
从图中可以看出
{⌊x⌋−⌈x⌉=0,当x是整数时⌊x⌋−⌈x⌉=0,当x不是是整数时 \left \lbrace \begin{aligned} \begin{array}{cc} \lfloor x \rfloor -\lceil x \rceil &=0, {\footnotesize 当x是整数时}\\ \lfloor x \rfloor -\lceil x \rceil &=0, {\footnotesize 当x不是是整数时} \end{array} \end{aligned} \right. {⌊x⌋−⌈x⌉⌊x⌋−⌈x⌉=0,当x是整数时=0,当x不是是整数时
用艾佛森的括号约定,可以表示为:
(3.2)⌊x⌋−⌈x⌉=[x不是整数] \tag{3.2} \lfloor x \rfloor -\lceil x \rceil = [{\footnotesize x不是整数}] ⌊x⌋−⌈x⌉=[x不是整数](3.2)
如果把对角线下移一个单位,就有:
(3.3)x−1<⌊x⌋⩽x⩽⌈x⌉<x+1 x-1 <\lfloor x \rfloor \leqslant x \leqslant\lceil x \rceil < x+1 \tag{3.3} x−1<⌊x⌋⩽x⩽⌈x⌉<x+1(3.3)
这些函数关于两个坐标轴互为反射:
(3.4)⌊−x⌋=−⌊x⌋;⌈−x⌉=−⌈x⌉ \tag{3.4} \lfloor -x \rfloor = -\lfloor x \rfloor ;\lceil -x \rceil = -\lceil x \rceil ⌊−x⌋=−⌊x⌋;⌈−x⌉=−⌈x⌉(3.4)
还有四条法则:
(3.5)⌊x⌋=n  ⟺  n⩽x<n+1,(a)⌊x⌋=n  ⟺  x−1<n⩽x,(b)⌈x⌉=n  ⟺  n−1<x⩽n,(c)⌈x⌉=n  ⟺  x⩽n<n+1,(d) \tag{3.5} \lfloor x \rfloor =n \iff n \leqslant x < n+1, (a) \\ \lfloor x \rfloor= n \iff x -1 < n \leqslant x, (b) \\ \lceil x \rceil = n \iff n-1 < x \leqslant n, (c) \\ \lceil x \rceil = n \iff x \leqslant n < n+1,(d) \\ ⌊x⌋=n⟺n⩽x<n+1,(a)⌊x⌋=n⟺x−1<n⩽x,(b)⌈x⌉=n⟺n−1<x⩽n,(c)⌈x⌉=n⟺x⩽n<n+1,(d)(3.5)
有可能将一个整数项移进或者移出底/顶
(3.6)⌊x+n⌋=⌊x⌋+n,n为整数 \lfloor x +n \rfloor = \lfloor x \rfloor + n, n{\footnotesize 为整数} \tag{3.6} ⌊x+n⌋=⌊x⌋+n,n为整数(3.6)
底括号和顶括号在许多情况下是多于的,因此可以随意插入或者去掉它们:
(3.7)x<n  ⟺  ⌊x⌋<n,(a)n<x  ⟺  n<⌈x⌉,(b)x⩽n  ⟺  ⌈x⌉⩽n,(c)n⩽x  ⟺  n⩽⌊x⌋.(d) \tag{3.7} \begin{aligned} &x < n \iff \lfloor x \rfloor < n,&&(a)\\ &n < x \iff n < \lceil x \rceil ,&&(b) \\ &x \leqslant n \iff \lceil x \rceil \leqslant n, &&(c)\\ &n \leqslant x \iff n \leqslant \lfloor x \rfloor. &&(d) \end{aligned} x<n⟺⌊x⌋<n,n<x⟺n<⌈x⌉,x⩽n⟺⌈x⌉⩽n,n⩽x⟺n⩽⌊x⌋.(a)(b)(c)(d)(3.7)
x和$\lfloor x \rfloor 之间的差称为之间的差称为之间的差称为x$的分数部分:
(3.8)x=x−⌊x⌋ \tag{3.8} {x} =x - \lfloor x \rfloor x=x−⌊x⌋(3.8)
3.2 底和顶的应用
证明:
(3.9)⌊⌊x⌋⌋=⌊x⌋,实数x⩾0. \left\lfloor {\sqrt {\left\lfloor x \right\rfloor } } \right\rfloor = \left\lfloor {\sqrt x } \right\rfloor, 实数x \geqslant 0. \tag{3.9} ⌊⌊x⌋⌋=⌊x⌋,实数x⩾0.(3.9)
证明步骤是: 用某种方法去掉⌊⌊x⌋⌋\left\lfloor {\sqrt {\left\lfloor x \right\rfloor } } \right\rfloor⌊⌊x⌋⌋外层的底和平方根,然后去掉内层的底,接着再将外层的符号加回去以得到⌊x⌋\left\lfloor {\sqrt x } \right\rfloor⌊x⌋
设m=⌊⌊x⌋⌋m⩽⌊x⌋<m+1⋯(3.5a)m2⩽⌊x⌋<(m+1)2m2⩽x<(m+1)2⋯左边用(3.7d),右边用(3.7a)m⩽⌊x⌋<m+1m=⌊x⌋⋯(3.5a) \begin{aligned} 设 &&m= \left \lfloor \sqrt {\lfloor x \rfloor} \right \rfloor\\ &&m \leqslant \sqrt { \lfloor x \rfloor} < m+1 && \cdots (3.5a)\\ &&m^2 \leqslant \lfloor x \rfloor < (m+1)^2 \\ &&m^2 \leqslant x < (m+1)^2&&\cdots {\footnotesize左边用(3.7d),右边用(3.7a)}\\ &&m \leqslant \sqrt {\lfloor x \rfloor } < m+1\\ &&m=\sqrt {\lfloor x \rfloor }&& \cdots (3.5a) \end{aligned} 设m=⌊⌊x⌋⌋m⩽⌊x⌋<m+1m2⩽⌊x⌋<(m+1)2m2⩽x<(m+1)2m⩽⌊x⌋<m+1m=⌊x⌋⋯(3.5a)⋯左边用(3.7d),右边用(3.7a)⋯(3.5a)
推广一下, 设f(x)f(x)f(x)是一个再实数区间连续的单调递增函数.
f(x)=整数⇒x=整数 f(x)= {\footnotesize 整数 }\Rightarrow x={\footnotesize 整数 } f(x)=整数⇒x=整数
(3.10)⌊f(x)⌋=⌊f(⌊x⌋)⌋⌈f(x)⌉=⌈f(⌈x⌉)⌉ \tag{3.10} \begin{array}{l}\left\lfloor {f(x)} \right\rfloor = \left\lfloor {f(\left\lfloor x \right\rfloor )} \right\rfloor \\ \left\lceil {f(x)} \right\rceil = \left\lceil {f(\left\lceil x \right\rceil )} \right\rceil \end{array} ⌊f(x)⌋=⌊f(⌊x⌋)⌋⌈f(x)⌉=⌈f(⌈x⌉)⌉(3.10)
对底的证明和刚才的几乎是相同的. 现在来证明顶. 如果x=⌈x⌉x=\lceil x \rceilx=⌈x⌉,那就没什么好证明的,肯定成立.
如果x̸=⌈x⌉x \not=\lceil x \rceilx̸=⌈x⌉, 那么就有$ x \leqslant \lceil x \rceil$
∵f(x)函数递增,且x⩽⌈x⌉∴f(x)<f(⌈x⌉)⌈f(x)⌉⩽f(⌈x⌉)又∵函数f(x)递增,∴∃y(x⩽y<⌈x⌉),使得f(y)=⌈f(x)⌉根据定义可得y是整数,但是不可能有一个整数位于⌊x⌋与⌈x⌉之间∴⌈f(x)⌉=⌈f(⌈x⌉)⌉ \begin{aligned} \because &f(x){\footnotesize 函数递增, 且} x \leqslant \lceil x \rceil \\ \therefore &f(x) < f(\lceil x \rceil) \\ &\lceil f(x) \rceil\leqslant f(\lceil x \rceil) \\ {\footnotesize又}\because &{\footnotesize 函数f(x)递增, }\\ \therefore & \exist y(x\leqslant y<\lceil x \rceil), {\footnotesize 使得}f(y) = \lceil f(x) \rceil\\ &{\footnotesize根据定义可得y是整数, 但是不可能有一个整数位于\left\lfloor x \right\rfloor 与\lceil x \rceil之间}\\ \therefore & \left\lceil {f(x)} \right\rceil = \left\lceil {f(\left\lceil x \right\rceil )} \right\rceil \end{aligned} ∵∴又∵∴∴f(x)函数递增,且x⩽⌈x⌉f(x)<f(⌈x⌉)⌈f(x)⌉⩽f(⌈x⌉)函数f(x)递增,∃y(x⩽y<⌈x⌉),使得f(y)=⌈f(x)⌉根据定义可得y是整数,但是不可能有一个整数位于⌊x⌋与⌈x⌉之间⌈f(x)⌉=⌈f(⌈x⌉)⌉
这个定理的一个重要特例值得提出来加以注意:如果m,n是整数且n为正,则:
(3.11)⌊x+mn⌋=⌊⌊x⌋+mn⌋ \tag{3.11} \left\lfloor {\frac{ {x + m}}{n}} \right\rfloor = \left\lfloor {\frac{ {\left\lfloor x \right\rfloor + m}}{n}} \right\rfloor ⌊nx+m⌋=⌊n⌊x⌋+m⌋(3.11)
还可以得到区间包含的整数
(3.12)区间包含的整数限制条件[α⋯β]⌊β⌋−⌈α⌉+1α⩽β[α⋯β)⌈β⌉−⌈α⌉α⩽β(α⋯β]⌊β⌋−⌊α⌋α⩽β(α⋯β)⌈β⌉−⌈α⌉−1α<β \tag{3.12} \begin{aligned} &{\footnotesize 区间 }&&{\footnotesize 包含的整数 }&&{\footnotesize 限制条件 }\\ &[\alpha \cdots \beta]&& \lfloor\beta\rfloor-\lceil\alpha\rceil+1 && \alpha\leqslant \beta\\ &[\alpha \cdots \beta)&& \lceil\beta\rceil-\lceil\alpha\rceil&& \alpha\leqslant \beta\\ &(\alpha \cdots \beta]&& \lfloor\beta\rfloor-\lfloor\alpha\rfloor&& \alpha\leqslant \beta\\ &(\alpha \cdots \beta)&& \lceil\beta\rceil-\lceil\alpha\rceil -1&& \alpha < \beta\\ \end{aligned} 区间[α⋯β][α⋯β)(α⋯β](α⋯β)包含的整数⌊β⌋−⌈α⌉+1⌈β⌉−⌈α⌉⌊β⌋−⌊α⌋⌈β⌉−⌈α⌉−1限制条件α⩽βα⩽βα⩽βα<β(3.12)
求1到1000中使得下列式子成立的n一共有多少个?
⌊n3⌋\n \left\lfloor {\sqrt[3]{n}} \right\rfloor \backslash n ⌊3n⌋\n
求解方法如下:
W=∑n=11000[⌊n3⌋\n]=∑k,n[k=⌊n3⌋][k\n][1⩽n⩽1000]=∑k,n[k⩽n3<(k+1)][k\n][1⩽n⩽1000]⋯根据3.5(b)=∑k,m,n[k3⩽n<(k+1)3][n=km][1⩽n⩽1000]=∑k,m[k3⩽km<(k+1)3][1⩽k⩽10]⋯n⩽1000,即k3⩽1000,即k⩽10=1+∑k,m[k3⩽km<(k+1)3][1⩽k<10]⋯将k=10单独拿出来=1+∑k,m[m∈[k2⋯(k+1)3/k)][1⩽k<10]=1+∑1⩽k<10(⌈k2+3k+3+1/k⌉−⌈k2⌉)⋯根据3.12=1+∑1⩽k<10(k2+3k+3+⌈1/k⌉−k2)⋯根据3.6=1+∑1⩽k<10(3k+4)=1+7+312×9=172 \begin{array}{l} W{\rm{ = }}\sum\limits_{n=1}^{1000} {[ {\lfloor {\sqrt[3]{n}} \rfloor \backslash n} ]} \\ \\ = \sum\limits_{k,n} {[ {k = \lfloor {\sqrt[3]{n}} \rfloor } ][ {k\backslash n} ][ {1 \leqslant n \leqslant 1000} ]} \\ =\sum\limits_{k,n} {[ {k \leqslant \sqrt[3]{n} < { {(k + 1)}}} ][ {k\backslash n} ]} [ {1 \leqslant n \leqslant 1000} ]& \cdots 根据3.5(b)\\ = \sum\limits_{k,m,n} {[ { {k^3} \leqslant n < { {(k + 1)}^3}} ][ {n = km} ]} [ {1 \leqslant n \leqslant 1000} ]\\ =\sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {1 \leqslant k \leqslant 10} ] &\cdots n\leqslant 1000,即k^3\leqslant 1000, 即k \leqslant 10\\ = 1 + \sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {1 \leqslant k < 10} ] &\cdots 将k=10单独拿出来\\ = 1 + \sum\limits_{k,m} [ m \in {\Big[k^2\cdots (k + 1)^3/k\Big) } ] [ {1 \leqslant k < 10} ]\\ = 1 + \sum\limits_{1 \leqslant k < 10} {(\lceil { {k^2} + 3k + 3 + 1/k} \rceil - \lceil { {k^2}} \rceil )} &\cdots 根据3.12\\ =1+ \sum\limits_{1 \leqslant k < 10} {({k^2} + 3k + 3 + \lceil { 1/k} \rceil - k^2 )} & \cdots 根据3.6\\ = 1 + \sum\limits_{1 \leqslant k < 10} {(3k + 4)} \\ = 1 + {{7+31}\over{2}} \times 9 \\ = 172\\ \end{array} W=n=1∑1000[⌊3n⌋\n]=k,n∑[k=⌊3n⌋][k\n][1⩽n⩽1000]=k,n∑[k⩽3n<(k+1)][k\n][1⩽n⩽1000]=k,m,n∑[k3⩽n<(k+1)3][n=km][1⩽n⩽1000]=k,m∑[k3⩽km<(k+1)3][1⩽k⩽10]=1+k,m∑[k3⩽km<(k+1)3][1⩽k<10]=1+k,m∑[m∈[k2⋯(k+1)3/k)][1⩽k<10]=1+1⩽k<10∑(⌈k2+3k+3+1/k⌉−⌈k2⌉)=1+1⩽k<10∑(k2+3k+3+⌈1/k⌉−k2)=1+1⩽k<10∑(3k+4)=1+27+31×9=172⋯根据3.5(b)⋯n⩽1000,即k3⩽1000,即k⩽10⋯将k=10单独拿出来⋯根据3.12⋯根据3.6
其中
∑1⩽k<10(3k+4) \sum\limits_{1 \leqslant k < 10} {(3k + 4)} 1⩽k<10∑(3k+4)
是一个等差数列,
[3(k+1)+4]−(3k+4)]=3k+3+4−3k−4=3 \begin{aligned} &[3(k+1) + 4] - (3k+4)] \\ = &3k+3+4 - 3k-4 \\ = &3 \end{aligned} ==[3(k+1)+4]−(3k+4)]3k+3+4−3k−43
所以根据等差数列的前N项和公式.
∑1⩽k<10(3k+4)=(3∗1+4)+(3∗9+4)2×9=7+312×9 \begin{aligned} &\sum\limits_{1 \leqslant k < 10} {(3k + 4)} \\ = &{{(3*1+4) +(3*9+4)}\over 2}\times 9\\ =&{{7+31}\over2}\times9 \end{aligned} ==1⩽k<10∑(3k+4)2(3∗1+4)+(3∗9+4)×927+31×9
继续推广,求1到N中使得上面式子成立的n有多少个?
令K=⌊N3⌋K=\lfloor \sqrt[3]{N}\rfloorK=⌊3N⌋
W=∑n=1N[⌊n3⌋\n]=∑k,m[k3⩽km<(k+1)3][1⩽k⩽K]⋯从刚才的运算可知=∑k,m[k3⩽km<(k+1)3][1⩽k<K]+∑k,m[k3⩽km<(k+1)3][k=K]=∑k,m[k3⩽km<(k+1)3][1⩽k<K]+∑m[K3⩽Km<(K+1)3]=∑k,m[k3⩽km<(k+1)3][1⩽k<K]+∑m[K3⩽Km⩽N]=∑1⩽k<K(3k+4)+∑m[K3⩽Km⩽N]⋯接上书上的公式,加号左边的运算是根据以上的运算获得=12(7+3K+1)(K−1)+∑m[m∈[K2..N/K]]=32K2+52K−4+∑m[m∈[K2..N/K]]=32K2+52K−4+⌊N/K⌋−⌈K2⌉+1=32K2+52K−4+⌊N/K⌋−K2+1=⌊N/K⌋+12K2+52K−3≈NN3+12(N3)2+52N3−3=N1−13+12N23+52N13−3=N23+12N23+52N13−3≈32N23+O(N13) \begin{aligned} W=& \sum\limits_{n=1}^{N} {[ {\lfloor {\sqrt[3]{n}} \rfloor \backslash n} ]} \\ = &\sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {1 \leqslant k \leqslant K} ] \cdots {\footnotesize 从刚才的运算可知}\\ = &\sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {1 \leqslant k < K} ] +\sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {k=K} ]\\ = &\sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {1 \leqslant k < K} ] +\sum\limits_{m} {[ { {K^3} \leqslant Km < { {(K+ 1)}^3}} ]} \\ = &\sum\limits_{k,m} {[ { {k^3} \leqslant km < { {(k + 1)}^3}} ]} [ {1 \leqslant k < K} ] +\sum\limits_{m} {[ {K^3} \leqslant Km \leqslant N ]} \\ =&\sum\limits_{1 \leqslant k < K} {(3k + 4)} +\sum\limits_{m} {[ {K^3} \leqslant Km \leqslant N ]} \cdots{\footnotesize 接上书上的公式,加号左边的运算是根据以上的运算获得}\\ =&\frac{1}{2}(7+3K+1)(K-1) + \sum_m[m \in [K^2..N/K]]\\ =&\frac{3}{2}K^2 +\frac{5}{2}K-4 + \sum_m[m \in [K^2..N/K]]\\ =&\frac{3}{2}K^2 +\frac{5}{2}K-4 + \lfloor N/K \rfloor - \lceil K^2 \rceil + 1\\ =&\frac{3}{2}K^2 +\frac{5}{2}K-4 + \lfloor N/K \rfloor - K^2 + 1\\ =&\lfloor N/K \rfloor+\frac{1}{2}K^2 + \frac{5}{2}K-3\\ \approx &\frac{N}{\sqrt[3]{N}}+\frac{1}{2}{(\sqrt[3]{N})}^2 + \frac{5}{2}\sqrt[3]{N}-3=N^{1- \frac{1}{3}} +\frac{1}{2}N^{2\over 3} + \frac{5}{2}N^{1\over 3}-3 \\ = &N^{\frac{2}{3}} +\frac{1}{2}N^{\frac{2}{3}} + \frac{5}{2}N^{1\over 3}-3 \\ \approx &{3 \over 2} N^{{2\over 3}} + O(N^{1\over 3}) \end{aligned} W===========≈=≈n=1∑N[⌊3n⌋\n]k,m∑[k3⩽km<(k+1)3][1⩽k⩽K]⋯从刚才的运算可知k,m∑[k3⩽km<(k+1)3][1⩽k<K]+k,m∑[k3⩽km<(k+1)3][k=K]k,m∑[k3⩽km<(k+1)3][1⩽k<K]+m∑[K3⩽Km<(K+1)3]k,m∑[k3⩽km<(k+1)3][1⩽k<K]+m∑[K3⩽Km⩽N]1⩽k<K∑(3k+4)+m∑[K3⩽Km⩽N]⋯接上书上的公式,加号左边的运算是根据以上的运算获得21(7+3K+1)(K−1)+m∑[m∈[K2..N/K]]23K2+25K−4+m∑[m∈[K2..N/K]]23K2+25K−4+⌊N/K⌋−⌈K2⌉+123K2+25K−4+⌊N/K⌋−K2+1⌊N/K⌋+21K2+25K−33NN+21(3N)2+253N−3=N1−31+21N32+25N31−3N32+21N32+25N31−323N32+O(N31)
这一节的最后一个应用是研究谱(spectrum). 一个实数的谱是整数组成的一个无限多重集合:
Spec(α)={⌊α⌋,⌊2α⌋,⌊3α⌋,⋯ } Spec(\alpha) = \{\lfloor \alpha \rfloor,\lfloor 2\alpha \rfloor,\lfloor 3\alpha \rfloor,\cdots\} Spec(α)={⌊α⌋,⌊2α⌋,⌊3α⌋,⋯}
设α\alphaα是正数,Spec(α)Spec(\alpha)Spec(α)中⩽n\leqslant n⩽n的元素的个数是:
(3.14)N(α,n)=∑k>0[⌊kα⌋⩽n]=∑k>0[⌊kα⌋<n+1]=∑k>0[kα<n+1]=∑k[0<k<(n+1)/α]=⌈(n+1)/α⌉−1 \tag{3.14} \begin{aligned} N(\alpha,n) = &\sum_{k>0}\Big[⌊kα⌋⩽ n\Big]\\ =&\sum_{k>0}\Big[⌊kα⌋<n+1\Big]\\ =&\sum_{k>0}\Big[kα<n+1\Big]\\ =&\sum_{k}\Big[0 < k < (n+1)/α\Big]\\ =&⌈(n+1)/α⌉ -1 \end{aligned} N(α,n)=====k>0∑[⌊kα⌋⩽n]k>0∑[⌊kα⌋<n+1]k>0∑[kα<n+1]k∑[0<k<(n+1)/α]⌈(n+1)/α⌉−1(3.14)
这一推导过程有两处特别有意义.首先,它用规则
$ m ⩽ n ⟺ m< n+1, {\footnotesize m 和n 为整数}$
将"⩽⩽⩽“改变成”<",所以根据(3.7)就可以了去掉底括号. 还有更为巧妙的, 它对k>0k>0k>0而不是k⩾1k\geqslant 1k⩾1求和, 因为对于某些nnn和ααα,(n+1)/α(n+1)/α(n+1)/α可能会小于1