Phần nguyên

Trong toán học và khoa học máy tính, hàm **floor** (**phần nguyên nhỏ hơn**) và **ceiling** (**phần nguyên lớn hơn**) là các quy tắc cho tương ứng một số thực vào một số nguyên gần nhất bên trái và bên phải số đã cho.
Vậy floor(x) là số nguyên lớn nhất không vượt quá x, còn ceiling(x) là số nguyên nhỏ nhất không nhỏ hơn x.

## Ký hiệu
Gauss giới thiệu cặp ngoặc vuông [*x*] cho hàm floor trong tương hỗ bậc hai (1808).
Nó vẫn là ký hiệu tiêu chuẩn trong toán học cho đến khi Iverson giới thiệu các hàm "floor" và "ceiling" với các ký hiệu \lfloor x \rfloor và \lceil x \rceil vào năm 1962 trong ngôn ngữ lập trình APL của ông ấy. Bây giờ cả hai cách ký hiệu vẫn đang được dùng trong toán học.

### Ví dụ

Đọc phần bên dưới để biết thêm về định nghĩa phần lẻ.

## Định nghĩa và tính chất
Trong những công thức dưới đây *x* và *y* là các số thực, *k*, *m*, và *n* là các số nguyên, và \mathbb{Z} là tập hợp số nguyên (số dương, số âm, và không).

Floor và ceiling có thể được định nghĩa bằng tập hợp như sau

: \lfloor x \rfloor=\max\, \{n\in\mathbb{Z}\mid n\le x\},

: \lceil x \rceil=\min\,\{n\in\mathbb{Z}\mid n\ge x\}.

Trong nửa khoảng có độ dài bằng một có duy nhất một số nguyên, vậy với số thực *x* tùy ý, có duy nhất cặp *m*, *n* thỏa mãn:
:x-1

Khi đó \lfloor x \rfloor = m\; và \;\lceil x \rceil = n\; có thể là định nghĩa cho các hàm floor và ceiling.

Phần lẻ x ký hiệu \{x\} là hàm số định nghĩa theo công thức sau, \{x\} = x -\lfloor x\rfloor, và toán tử mô-đun được định nghĩa theo công thức:
x \,\bmod\, y = x-y\left\lfloor \frac{x}{y}\right\rfloor.

### Tương đương
Các công thức dưới đây dùng để rút gọn các biểu thức chứa các hàm floor, ceiling.

:
\begin{align}
\lfloor x \rfloor = n &\;\;\Leftrightarrow &n &\le x 

Trong ngôn ngữ của lý thuyết thứ tự, hàm floor là một ánh xạ thặng dư, hay một phần của một liên kết Galois: nó là liên hợp trên của hàm số nhúng các số nguyên vào tập hợp số thực.

:
\begin{align}
x

Các công thức dưới đây đưa ra quy tắc khi cộng thêm một số nguyên vào các hàm phần nguyên như thế nào:

:
\begin{align}
\lfloor x+n \rfloor &= \lfloor x \rfloor+n,\\
\lceil x+n \rceil &= \lceil x \rceil+n,\\
\{ x+n \} &= \{ x \}.
\end{align}


Các công thức trên không đúng nếu *n* không phải số nguyên, tuy vậy:
:\begin{align}
&\lfloor x \rfloor + \lfloor y \rfloor &\leq \;\lfloor x + y \rfloor \;&\leq\; \lfloor x \rfloor + \lfloor y \rfloor + 1,\\
&\lceil x \rceil + \lceil y \rceil -1 &\leq \;\lceil x + y \rceil \;&\leq \;\lceil x \rceil + \lceil y \rceil.
\end{align}

### Mối liên hệ giữa các hàm
Từ định nghĩa dễ dàng có được
:\lfloor x \rfloor \le \lceil x \rceil,  dấu bằng xảy ra khi và chỉ khi *x* là số nguyên, i.e.
:\lceil x \rceil - \lfloor x \rfloor = \begin{cases}
0&\mbox{ if } x\in \mathbb{Z}\\
1&\mbox{ if } x\not\in \mathbb{Z}
\end{cases}

n là số nguyên thì:
:\lfloor n \rfloor = \lceil n \rceil = n.

Khi số âm là đối số thì đổi các hàm floor và ceil đồng thời đưa dấu trừ ra ngoài:
:\lfloor x \rfloor +\lceil -x \rceil=0,  tức là:
:\lfloor -x \rfloor =-\lceil x \rceil,
:\lceil -x \rceil =-\lfloor x \rfloor,

:\lfloor x \rfloor + \lfloor -x \rfloor = \begin{cases}
0&\mbox{ if } x\in \mathbb{Z}\\
-1&\mbox{ if } x\not\in \mathbb{Z},
\end{cases}

:\lceil x \rceil + \lceil -x \rceil = \begin{cases}
0&\mbox{ if } x\in \mathbb{Z}\\
1&\mbox{ if } x\not\in \mathbb{Z}.
\end{cases}

Về phần lẻ:

:\{ x \} +  \{ -x \} = \begin{cases}
0&\mbox{ if } x\in \mathbb{Z}\\
1&\mbox{ if } x\not\in \mathbb{Z}.
\end{cases}

Floor, ceiling, và phần lẻ là hàm lũy đẳng:

:
\begin{align}
\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{align}


Dễ thấy các đẳng thức sau là đúng:
:
\begin{align}
\Big\lfloor \lceil x \rceil \Big\rfloor &= \lceil x \rceil, \\
\Big\lceil \lfloor x \rfloor \Big\rceil &= \lfloor x \rfloor. \\
\end{align}


Với *y* có định thì, *x* mod *y* là hàm lũy đẳng:
:(x \,\bmod\, y) \,\bmod\, y =  x \,\bmod\, y.\;
Cũng từ định nghĩa ta có,
:\{x\}= x \,\bmod\, 1.\;

### Phép chia
Nếu *n* ≠ 0,
:0 \le \left \{\frac{m}{n} \right\} \le 1-\frac{1}.

Nếu *n* > 0,
:\left\lfloor\frac{x+m}{n}\right\rfloor = \left\lfloor\frac{\lfloor x\rfloor +m}{n}\right\rfloor,

:\left\lceil\frac{x+m}{n}\right\rceil = \left\lceil\frac{\lceil x\rceil +m}{n}\right\rceil.


Nếu *m* > 0,
: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,

: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.


Với *m* = 2:
:n= \left\lfloor \frac{n}{2}\right \rfloor + \left\lceil\frac{n}{2}\right \rceil.

Tổng quát, với *m* > 0,
:\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,

:\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.


Biểu thức dưới đây dùng để chuyển đổi floor sang ceiling và ngược lại (*m* > 0)

:\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, 
:\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, 

Nếu *m* và *n* là các số nguyên dương và nguyên tố cùng nhau, thì 
:\sum_{i=1}^{n-1} \left\lfloor \frac{im}{n} \right\rfloor = \frac{1}{2}(m - 1)(n - 1).

Vì vế phải của biểu thức trên đối xứng theo *m* và *n*, vậy nên ta có biểu thức dưới đây
:\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.


Tổng quát, nếu *m* và *n* nguyên dương:
:\begin{align}
&\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 + 
\dots + 
\left\lfloor \frac{(m-1)n+x}{m} \right \rfloor.
\end{align}


Cho các số nguyên dương *m*, *n* và số thực ngẫu nhiên *x*:
:  \left\lfloor \frac{\lfloor x/m\rfloor}{n} \right\rfloor = \left\lfloor \frac{x}{mn} \right\rfloor 
:  \left\lceil \frac{\lceil x/m\rceil}{n} \right\rceil = \left\lceil \frac{x}{mn} \right\rceil 

### Sự liên tục
Không có hàm nào chúng ta đang xét là liên tục cả, nhưng đều tuyến tính trên từng đoạn. \lfloor x \rfloor và \lceil x \rceil là hàm hằng trên từng đoạn và gián đoạn tại các điểm nguyên. Hàm \{ x\} cũng gián đoạn tại các điểm nguyên, và x  \,\bmod\, y với biến *x* hằng *y* gián đoạn tại các bội của *y*.

\lfloor x \rfloor là bán liên tục trên còn \lceil x \rceil và \{ x\}\; là bán liên tục dưới. *x* mod *y* là bán liên tục dưới với *y* dương và là bán liên tục trên với *y* âm.

### Khai triển chuỗi
Các hàm chúng ta đang xét đều không liên tục vì thế chúng không có các khai triển chuỗi lũy thừa. Hàm floor và ceiling không liên tục nên không có khai triển Fourier.

Với y cố định, *x* mod *y* có khai triển Fourier 
:x \,\bmod\, y = \frac{y}{2} - \frac{y}{\pi} \sum_{k=1}^\infty 
\frac{\sin\left(\frac{2 \pi k x}{y}\right)} {k}.


Phần lẻ {*x*} = *x* mod 1 khai triển:
:\{x\}= \frac{1}{2} - \frac{1}{\pi} \sum_{k=1}^\infty 
\frac{\sin(2 \pi k x)} {k}.


Dùng công thức {x} = x &minus; floor(x), floor(x) = x &minus; {x} ta có
:\lfloor x\rfloor = x - \frac{1}{2} + \frac{1}{\pi} \sum_{k=1}^\infty \frac{\sin(2 \pi k x)}{k}.

## Ứng dụng
### Phần lẻ
Hàm **phần lẻ** là hàm răng cưa, ký hiệu \{x\} với *x* là số thực, được định nghĩa bởi công thức 
:\{x\} = x -\lfloor x\rfloor.

Với mọi *x*,
:0\le\{x\}

Với x>0 trong dạng thập phân, floor(x) là phần bên trái của biểu diễn thập phân, phần lẻ của x là phần bên phải khi thay tất cả các số bên trái bởi 0.

### Toán tử mod

**[[Toán tử mod]]**, ký hiệu là *x* mod *y*,*x*, *y* thực, *y* ≠ 0, xác định theo công thức
 
:x \,\bmod\, y = x-y\left\lfloor \frac{x}{y}\right\rfloor.

*x* mod *y* luôn nằm giữa 0 và *y*; i.e.

Nếu *y* > 0,
:0 \le x \,\bmod\, y 
còn nếu *y* 0 \ge x \,\bmod\, y >y.

Nếu *x* nguyên còn *y* nguyên dương,
:(x \,\bmod\, y) \equiv x \pmod{y}.

*x* mod *y* với *y* có định là **[[hàm răng cưa]]**.

### Luật tương hỗ bậc hai

Chứng minh thứ ba của Gauss về luật tương hỗ bậc hai, được hiệu đính bởi Eisenstein, có hai bước cơ bản.

Cho *p* và *q* là hai số nguyên tố lẻ phân biệt, và đặt 
:m = \frac{p - 1}{2},\;\; n = \frac{q - 1}{2}.

Đầu tiên, bổ đề Gauss được sử dụng để cho thấy rằng ký hiệu Legendre có thể được tính bằng các công thức

:\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 }


và 
:\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 }.


Bước thứ hai là sử dụng một lập luận hình học để chứng tỏ rằng

:\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.


Kết hợp các biểu thức trên ta có luật tương hỗ bậc hai dưới dạng

:\left(\frac{p}{q}\right) \left(\frac{q}{p}\right) = (-1)^{mn}=(-1)^{\frac{p-1}{2}\frac{q-1}{2}}.

Một số công thức sử dụng hàm floor để biểu diễn sự tương hỗ bậc hai của các số nhỏ modulo số nguyên tố lẻ *p*:
:\left(\frac{2}{p}\right)  = (-1)^{\left\lfloor\frac{p+1}{4}\right\rfloor},

:\left(\frac{3}{p}\right)  = (-1)^{\left\lfloor\frac{p+1}{6}\right\rfloor}.

### Làm tròn

Việc làm tròn các số dương *x* đến số nguyên gần nhất được diễn tả như sau \lfloor x + 0.5\rfloor.

### Số các chữ số

Số các chữ số trong hệ cơ số *b* của số nguyên dương *k* là
::\lfloor \log_{b}{k} \rfloor + 1.

### Thừa số của giai thừa

đặt *n* nguyên dương và *p* là số nguyên tố. Lũy thừa của *p* trong khai triển của *n*! được cho bởi công thức

:\left\lfloor\frac{n}{p}\right\rfloor + \left\lfloor\frac{n}{p^2}\right\rfloor + \left\lfloor\frac{n}{p^3}\right\rfloor + \dots

Chú ý rằng đó là tổng có giới hạn, số hạng bằng không khi *p**k* > *n*.

### Dãy Beatty

Dãy Beatty cho thấy cách mà mỗi số vô tỉ dương tạo ra một phân hoạch các số nguyên thành hai dãy bằng hàm floor.

### Hằng số Euler γ

Đây là những công thức cho Hằng số Euler γ = 0.57721 56649... chứa các hàm floor và ceiling, chẳng hạn:

:\gamma =\int_1^\infty\left({1\over\lfloor x\rfloor}-{1\over x}\right)\,dx,

: \gamma =      \lim_{n \to \infty} \frac{1}{n}\, \sum_{k=1}^n \left (\left \lceil \frac{n}{k} \right \rceil - \frac{n}{k} \right),


và

:
 \gamma = \sum_{k=2}^\infty (-1)^k \frac{ \left \lfloor \log_2 k \right \rfloor}{k}
  = \tfrac12-\tfrac13
  + 2\left(\tfrac14 - \tfrac15 + \tfrac16 - \tfrac17\right)
  + 3\left(\tfrac18 - \dots - \tfrac1{15}\right) + \dots


### Hàm Riemann ζ

### Các công thức cho số nguyên tố

*n* là số nguyên tố khi và chỉ khi

:
\sum_{m=1}^\infty \left(\left\lfloor\frac{n}{m}\right\rfloor-\left\lfloor\frac{n-1}{m}\right\rfloor\right) = 2.


*r* là số nguyên lớn hơn 1, *p**n* là số nguyên tố thứ n, ký hiệu

:\alpha = \sum_{m=1}^\infty p_m r^{-m^2}.

Thì

:p_n = \left\lfloor r^{n^2}\alpha \right\rfloor - r^{2n-1}\left\lfloor r^{(n-1)^2}\alpha\right\rfloor.

Có số θ = 1.3064... với tính chất

:\left\lfloor \theta^3 \right\rfloor, \left\lfloor \theta^9 \right\rfloor, \left\lfloor \theta^{27} \right\rfloor, \dots

đều là số nguyên tố.

Cũng có thêm số ω = 1.9287800... mà

:\left\lfloor 2^\omega\right\rfloor, \left\lfloor 2^{2^\omega} \right\rfloor, \left\lfloor 2^{2^{2^\omega}} \right\rfloor, \dots

đều nguyên tố.

π(*x*) là số các số nguyên tố nhỏ hơn hoặc bằng *x*. Nó được suy luận từ Định lý Wilson

:\pi(n) = \sum_{j=2}^n\left\lfloor\frac{(j-1)!+1}{j} - \left\lfloor\frac{(j-1)!}{j}\right\rfloor\right\rfloor.

Nếu *n* ≥ 2,

:
\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.


Không công thức nào trên đây ứng dụng thực tế.

### Vấn đề đã giải quyết
Ramanujan đã gửi các bài toán sau đây đến *Journal of the Indian Mathematical Society*.

Cho *n* là số nguyên dương, chứng minh rằng:

:\left\lfloor\tfrac{n}{3}\right\rfloor + \left\lfloor\tfrac{n+2}{6}\right\rfloor + \left\lfloor\tfrac{n+4}{6}\right\rfloor = \left\lfloor\tfrac{n}{2}\right\rfloor + \left\lfloor\tfrac{n+3}{6}\right\rfloor,

:\left\lfloor\tfrac12 + \sqrt{n+\tfrac12}\right\rfloor = \left\lfloor\tfrac12 + \sqrt{n+\tfrac14}\right\rfloor,

:\left\lfloor\sqrt{n}+ \sqrt{n+1}\right\rfloor = \left\lfloor \sqrt{4n+2}\right\rfloor.

### Vấn đề chưa giải quyết
Có số nguyên dương *k* nào thỏa mãn, *k* ≥ 6, mà:
:3^k-2^k\left\lfloor \left(\tfrac32\right)^k \right\rfloor  > 2^k-\left\lfloor \left(\tfrac32\right)^k \right\rfloor -2\;\;?

Mahler đã chứng minh chỉ có hữu hạn số *k* như vậy; tuy nhiên người ta vẫn chưa biết số nào như vậy.

## Xem thêm
* Hàm số nguyên gần nhất.
* Truncation, một hàm tương tự.
* Step function.

## Chú thích

## Tham khảo

*
*
*
*
*Nicholas J. Higham, *Handbook of writing for the mathematical sciences*, SIAM. ISBN 0898714206, p.&nbsp;25
*ISO/IEC. *ISO/IEC 9899::1999(E): Programming languages — C* (2nd ed), 1999; Section 6.3.1.4, p.&nbsp;43.
*
*
*
*
*Michael Sullivan. *Precalculus*, 8th edition, p.&nbsp;86
*

## Liên kết ngoài
* Štefan Porubský, "Integer rounding functions" , *Interactive Information Portal for Algorithmic Mathematics*, Institute of Computer Science of the Czech Academy of Sciences, Prague, Czech Republic, retrieved 10/24/2008