下取整函数
上取整函数
在数学和计算机科学中,取整函数是一类将实数映射到相近的整数的函数。[1]
常用的取整函数有两个,分别是下取整函数(英语:floor function)和上取整函数(ceiling function)。
下取整函数即为取底符号,在数学中一般记作
或者
或者
,在计算机科学中一般记作floor(x),表示不超过x的整数中最大的一个。
![{\displaystyle [x]=\max \,\{n\in \mathbb {Z} \mid n\leq x\}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/89b4057f9bb7f2632a9935475e001d5cf4a832fa)
举例来说,
,
,
,
。对于非负的实数,其下取整函数的值一般叫做它的整数部分或取整部分。而
叫做x的小数部分。每个分数都可以表示成其整数部分与一个真分数的和,而实数的整数部分和小数部分是与此概念相应的拓延。
下取整函数的符号用方括号表示(
),称作高斯符号,首次出现是在卡尔·弗里德里希·高斯的数学著作《算术研究》。
上取整函数即为取顶符号在数学中一般记作
,在计算机科学中一般记作ceil(x),表示不小于x的整数中最小的一个。
![{\displaystyle \lceil x\rceil =\min\{n\in \mathbb {Z} \mid x\leq n\}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/03bd72bbdadfd75988d563bfc19281da65a428bf)
举例来说,
,
,
,
。
计算机中的上取整函数和下取整函数的命名来自于英文的ceiling(天花板)和floor(地板),1962年由肯尼斯·艾佛森于《A Programming Language》引入。[2]
对于高斯符号,有如下性质。
- 按定义:
当且仅当x为整数时取等号。
- 设x和n为正整数,则:
![{\displaystyle \left[{\frac {n}{x}}\right]\geq {\frac {n}{x}}-{\frac {x-1}{x}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5ea80fb7af13b53e9762e6966ccb3a747bf7b52c)
- 当n为正整数时,有:
其中
表示
除以
的余数。
- 对任意的整数k和任意实数x,
![{\displaystyle [{k+x}]=k+[x].}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4f43305ca3f5913263e3e82f8e170fc68220a92a)
- 一般的数值修约规则可以表述为将x映射到floor(x + 0.5);
- 高斯符号不是连续函数,但是上半连续的。作为一个分段的常数函数,在其导数有定义的地方,高斯符号导数为零。
- 设x为一个实数,n为整数,则由定义,n ≤ x当且仅当n ≤ floor(x)。
- 当x是正数时,有:
![{\displaystyle \left\lbrack 2x\right\rbrack -2\left\lbrack x\right\rbrack \leqslant 1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3acec739fec1b4ac620b528cec930bd00dcd1f94)
- 用高斯符号可以写出若干个素数公式,但没有什么实际价值,见§ 素数公式。
- 对于非整数的x,高斯符号有如下的傅里叶级数展开:
![{\displaystyle [x]=x-{\frac {1}{2}}+{\frac {1}{\pi }}\sum _{k=1}^{\infty }{\frac {\sin(2\pi kx)}{k}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/879be76c85ac09a82d147b5a058762cb0012cbb0)
- 根据Beatty定理,每个正无理数都可以通过高斯符号制造出一个整数集的分划。
- 最后,对于每个正整数k,其在 p 进制下的表示有
个数位。
由上下取整函数的定义,可见
![{\displaystyle \lfloor x\rfloor \leq \lceil x\rceil ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d75aab25b2dcbdfe4ce59f321d17548a30c3888f)
等号当且仅当
为整数,即
![{\displaystyle \lceil x\rceil -\lfloor x\rfloor ={\begin{cases}0,&{\text{ 若 }}\ x\in \mathbb {Z} ,\\1,&{\text{ 若 }}\ x\not \in \mathbb {Z} .\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5a999e5bd199fafca75fc10d96a3b0684a40cf44)
实际上,上取整与下取整函数作用于整数
,效果等同恒等函数:
![{\displaystyle \lfloor n\rfloor =\lceil n\rceil =n.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5a88a4bc04ed855e1e71231810a3ca86660aad49)
自变量加负号,相当于将上取整与下取整互换,外面再加负号,即:
![{\displaystyle {\begin{aligned}\lfloor x\rfloor +\lceil -x\rceil &=0,\\-\lfloor x\rfloor &=\lceil -x\rceil ,\\-\lceil x\rceil &=\lfloor -x\rfloor .\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d9458e00bb38c408f5e94d389d7e4db3ae491577)
且:
![{\displaystyle \lfloor x\rfloor +\lfloor -x\rfloor ={\begin{cases}0,&{\text{ 若 }}\ x\in \mathbb {Z} ,\\-1,&{\text{ 若 }}\ x\not \in \mathbb {Z} ,\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cc1ed92e0c8e9612a085b535bcc5a190d89dbcce)
![{\displaystyle \lceil x\rceil +\lceil -x\rceil ={\begin{cases}0,&{\text{ 若 }}\ x\in \mathbb {Z} ,\\1,&{\text{ 若 }}\ x\not \in \mathbb {Z} .\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/076bc950c0cb11010a219769d5e63b6070814447)
至于小数部分
,自变量取相反数会使小数部分变成关于1的“补码”:
![{\displaystyle \{x\}+\{-x\}={\begin{cases}0,&{\text{ 若 }}\ x\in \mathbb {Z} ,\\1,&{\text{ 若 }}\ x\not \in \mathbb {Z} .\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f5344cae1e6bfe172b8eff777ba3ab038c449f59)
上取整、下取整、小数部分皆为幂等函数,即函数迭代两次的结果等于自身:
![{\displaystyle {\begin{aligned}{\Big \lfloor }\lfloor x\rfloor {\Big \rfloor }&=\lfloor x\rfloor ,\\{\Big \lceil }\lceil x\rceil {\Big \rceil }&=\lceil x\rceil ,\\{\Big \{}\{x\}{\Big \}}&=\{x\}.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9e33e2b00790e7cfd608186d85c22aa1b13d5b6c)
而多个上取整与下取整依次迭代的效果,相当于最内层一个:
![{\displaystyle {\begin{aligned}{\Big \lfloor }\lceil x\rceil {\Big \rfloor }&=\lceil x\rceil ,\\{\Big \lceil }\lfloor x\rfloor {\Big \rceil }&=\lfloor x\rfloor ,\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3dae706708845d0a651915a67ff6ea6d90cc070d)
因为外层取整函数实际只作用在整数上,不带来变化。
若
和
为正整数,且
,则
![{\displaystyle 0\leq \left\{{\frac {m}{n}}\right\}\leq 1-{\frac {1}{|n|}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bec18ad4f6fbaa7e99b70a4afacb9ebd59611691)
若
为正整数,则
![{\displaystyle \left\lfloor {\frac {x+m}{n}}\right\rfloor =\left\lfloor {\frac {\lfloor x\rfloor +m}{n}}\right\rfloor ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/66824749d7091486e854715f2077f36cd375f61f)
![{\displaystyle \left\lceil {\frac {x+m}{n}}\right\rceil =\left\lceil {\frac {\lceil x\rceil +m}{n}}\right\rceil .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/717d5159a662083812ad3c597fd345d259d97846)
若
为正数,则
![{\displaystyle n=\left\lceil {\frac {n}{m}}\right\rceil +\left\lceil {\frac {n-1}{m}}\right\rceil +\dots +\left\lceil {\frac {n-m+1}{m}}\right\rceil ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2561eb3ceba1a04dc8c81db12de2149893a8bf5b)
![{\displaystyle n=\left\lfloor {\frac {n}{m}}\right\rfloor +\left\lfloor {\frac {n+1}{m}}\right\rfloor +\dots +\left\lfloor {\frac {n+m-1}{m}}\right\rfloor .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c0a74aeb025495228e1b08ff3864c693b29c23f8)
代
,上式推出:
![{\displaystyle n=\left\lfloor {\frac {n}{2}}\right\rfloor +\left\lceil {\frac {n}{2}}\right\rceil .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4ff6460c82b233439659fde2413de97e43f0f35b)
更一般地,对正整数
,有埃尔米特恒等式:[5]
![{\displaystyle \lceil mx\rceil =\left\lceil x\right\rceil +\left\lceil x-{\frac {1}{m}}\right\rceil +\dots +\left\lceil x-{\frac {m-1}{m}}\right\rceil ,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/562255ffe997a9aa1eacd6c04046429b19c7190d)
![{\displaystyle \lfloor mx\rfloor =\left\lfloor x\right\rfloor +\left\lfloor x+{\frac {1}{m}}\right\rfloor +\dots +\left\lfloor x+{\frac {m-1}{m}}\right\rfloor .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3dd5c7696ac3e96258f4e16094cc3476698e1805)
对于正整数
,以下两式可将上下取整函数互相转化:
![{\displaystyle \left\lceil {\frac {n}{m}}\right\rceil =\left\lfloor {\frac {n+m-1}{m}}\right\rfloor =\left\lfloor {\frac {n-1}{m}}\right\rfloor +1,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6b946e76ca9799e3bf22356f21ae446eb5eb4140)
![{\displaystyle \left\lfloor {\frac {n}{m}}\right\rfloor =\left\lceil {\frac {n-m+1}{m}}\right\rceil =\left\lceil {\frac {n+1}{m}}\right\rceil -1.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7a32a7aab506ce5b901ed6e5b132071119a139ac)
对任意正整数
和
,有:
![{\displaystyle \sum _{k=1}^{n-1}\left\lfloor {\frac {km}{n}}\right\rfloor ={\frac {(m-1)(n-1)+\gcd(m,n)-1}{2}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/21702d871cf1de026dda91f2b70b3e3303681a8a)
作为特例,当
和
互素时,上式简化为
![{\displaystyle \sum _{k=1}^{n-1}\left\lfloor {\frac {km}{n}}\right\rfloor ={\frac {1}{2}}(m-1)(n-1).}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4f0396688bbd92cc6b183515b26c87776a7f0f48)
此等式可以几何方式证明。又由于右式关于
、
对称,可得
![{\displaystyle \left\lfloor {\frac {m}{n}}\right\rfloor +\left\lfloor {\frac {2m}{n}}\right\rfloor +\dots +\left\lfloor {\frac {(n-1)m}{n}}\right\rfloor =\left\lfloor {\frac {n}{m}}\right\rfloor +\left\lfloor {\frac {2n}{m}}\right\rfloor +\dots +\left\lfloor {\frac {(m-1)n}{m}}\right\rfloor .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c80463c3d8609f3a51f2a8c3f3cdd3218e17bbc7)
更一般地,对正整数
,有
![{\displaystyle {\begin{aligned}&\left\lfloor {\frac {x}{n}}\right\rfloor +\left\lfloor {\frac {m+x}{n}}\right\rfloor +\left\lfloor {\frac {2m+x}{n}}\right\rfloor +\dots +\left\lfloor {\frac {(n-1)m+x}{n}}\right\rfloor \\=&\left\lfloor {\frac {x}{m}}\right\rfloor +\left\lfloor {\frac {n+x}{m}}\right\rfloor +\left\lfloor {\frac {2n+x}{m}}\right\rfloor +\cdots +\left\lfloor {\frac {(m-1)n+x}{m}}\right\rfloor .\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/05b7ffe786b07d7c69d786771419f914b97643ea)
上式算是一种“互反律”(reciprocity law),与§ 二次互反律有关。
高斯给出二次互反律的第三个证明,经艾森斯坦修改后,有以下两个主要步骤。
设
、
为互异奇素数,又设
![{\displaystyle n={\frac {q-1}{2}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/31b3d9aebe633c023233c8ee52b24379b8edadaf)
首先,利用高斯引理,证明勒让德符号可表示为和式:
![{\displaystyle \left({\frac {q}{p}}\right)=(-1)^{\left\lfloor {\frac {q}{p}}\right\rfloor +\left\lfloor {\frac {2q}{p}}\right\rfloor +\dots +\left\lfloor {\frac {mq}{p}}\right\rfloor },}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed79305f16405ffa6115a2dc3010c8725d369fe2)
同样
![{\displaystyle \left({\frac {p}{q}}\right)=(-1)^{\left\lfloor {\frac {p}{q}}\right\rfloor +\left\lfloor {\frac {2p}{q}}\right\rfloor +\dots +\left\lfloor {\frac {np}{q}}\right\rfloor }.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/56e9d891515bf5412e6aa52aa13cc08863908abf)
其后,采用几何论证,证明
![{\displaystyle \left\lfloor {\frac {q}{p}}\right\rfloor +\left\lfloor {\frac {2q}{p}}\right\rfloor +\dots +\left\lfloor {\frac {mq}{p}}\right\rfloor +\left\lfloor {\frac {p}{q}}\right\rfloor +\left\lfloor {\frac {2p}{q}}\right\rfloor +\dots +\left\lfloor {\frac {np}{q}}\right\rfloor =mn.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed674b9dfa93cc24ed95292189a8d0b4932e3776)
总结上述两步,得
![{\displaystyle \left({\frac {p}{q}}\right)\left({\frac {q}{p}}\right)=(-1)^{mn}=(-1)^{{\frac {p-1}{2}}{\frac {q-1}{2}}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/107230eddab9380f27bd1fc2b6871f1c300efbf2)
此即二次互反律。一些小整数模奇素数
的二次特征标,可以高斯符号表示,如:
![{\displaystyle \left({\frac {2}{p}}\right)=(-1)^{\left\lfloor {\frac {p+1}{4}}\right\rfloor },}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0194dd4311e17974ecd16a714d8fcc9955a5cd72)
![{\displaystyle \left({\frac {3}{p}}\right)=(-1)^{\left\lfloor {\frac {p+1}{6}}\right\rfloor }.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/792e976fc299949d1a8094b3e02aa0552a7ef3d7)
下取整函数出现于若干刻画素数的公式之中。举例,因为
在
整除
时等于
,否则为
,所以正整数
为素数当且仅当[11]
![{\displaystyle \sum _{m=1}^{\infty }\left(\left\lfloor {\frac {n}{m}}\right\rfloor -\left\lfloor {\frac {n-1}{m}}\right\rfloor \right)=2.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f9881d0f22464275398693724fb7063b188e5755)
除表示素数的条件外,还可以写出公式使其取值为素数。例如,记第
个素数为
,任选一个整数
,然后定义实数
为
![{\displaystyle \alpha =\sum _{m=1}^{\infty }p_{m}r^{-m^{2}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bf02877ba996f8884e7ead7d57944017f3498d43)
则只用取整、幂、四则运算可以写出素数公式:
![{\displaystyle p_{n}=\left\lfloor r^{n^{2}}\alpha \right\rfloor -r^{2n-1}\left\lfloor r^{(n-1)^{2}}\alpha \right\rfloor .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/90bcc72261e391cc4e3d104c07491dbe39e9d00f)
类似还有米尔斯常数
,使
![{\displaystyle \left\lfloor \theta ^{3}\right\rfloor ,\left\lfloor \theta ^{9}\right\rfloor ,\left\lfloor \theta ^{27}\right\rfloor ,\dots }](https://wikimedia.org/api/rest_v1/media/math/render/svg/3bcc1a49888c8d60157dde4dfe390d8af7558a04)
皆为素数。[13]
若不迭代三次方函数,改为迭代以
为㡳的指数函数,亦有
使
![{\displaystyle \left\lfloor 2^{\omega }\right\rfloor ,\left\lfloor 2^{2^{\omega }}\right\rfloor ,\left\lfloor 2^{2^{2^{\omega }}}\right\rfloor ,\dots }](https://wikimedia.org/api/rest_v1/media/math/render/svg/35a5047c7cc7d89def04ce577f4ca56a4476540e)
皆为素数。[13]
以素数计算函数
表示小于或等于
的素数个数。由威尔逊定理,可知
![{\displaystyle \pi (n)=\sum _{j=2}^{n}\left\lfloor {\frac {(j-1)!+1}{j}}-\left\lfloor {\frac {(j-1)!}{j}}\right\rfloor \right\rfloor .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f6ab9152a6baaadff6a76e3ddd308bee75394c6e)
又或者,当
时:[15]
![{\displaystyle \pi (n)=\sum _{j=2}^{n}\left\lfloor {\frac {1}{\sum _{k=2}^{j}\left\lfloor \left\lfloor {\frac {j}{k}}\right\rfloor {\frac {k}{j}}\right\rfloor }}\right\rfloor .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c8242999a9a665cabdd1ee6c89792eaf43a6d13d)
本小节的公式未有任何实际用途。[16][17]
![{\displaystyle \left\lbrack {\frac {x}{2}}\right\rbrack ={\frac {1}{4}}((-1)^{[x]}-1+2[x])}](https://wikimedia.org/api/rest_v1/media/math/render/svg/830df67fc2f38714e73e32a850fdfdf898e2e9ee)
![{\displaystyle \left\lbrack {\frac {x}{3}}\right\rbrack ={\frac {1}{3}}({\frac {2}{\sqrt {3}}}\sin({\frac {2\pi }{3}}[x]+{\frac {\pi }{3}})-1+[x])}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bc1e086ddb7b0784110b8710c793f07ba71e98c0)
![{\displaystyle \sum _{k=0}^{n-1}E(x+{\frac {k}{n}})=E(nx)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a1a23373d2ee4718496326600e99d5e0a08f327c)
![{\displaystyle E({\frac {1}{n}}E(nx))=E(x)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/cdc76729d9ab3993743da3b913cc37c3dba04c40)
- 如果x为整数,则
![{\displaystyle E(x)+E(-x)=0}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a2ae610379f3cd41e55a949613027491bb43562e)
- 否则
![{\displaystyle E(x)+E(-x)=-1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/10dfecbf2c5b1bf439345cd39b2ac642aebda406)
截尾函数