Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Kết quả (a mod b)
1
quy ước cắt cụt ("%")
Thương (cắt cụt) 2
Modulo làm tròn xuống (mang dấu của số chia) 1
5 div 2 = 2 R 1; check 2 x 2 + 1 = 5. So 5 mod 2 = 1.

Phép modulo là gì?

Phép modulo, viết là a mod b, cho ra phần dư còn lại khi lấy số bị chia a chia cho số chia (modulus) b. Phép toán này có mặt ở khắp nơi trong lập trình và toán học: từ tính toán theo kiểu đồng hồ, băm dữ liệu (hashing), duyệt vòng qua một danh sách, kiểm tra tính chia hết cho đến mật mã học đều dựa vào nó. Công cụ này tính số dư cho cả số dương, số âm lẫn số thập phân, đồng thời trình bày lời giải đầy đủ từng bước.

Trục số biểu diễn 17 chia thành ba bước nhảy 5 với số dư là 2
17 mod 5 = 2: trừ số chia theo từng bước trọn vẹn; phần còn lại là số dư.

Cách sử dụng

Bạn chỉ cần nhập Số bị chia (a)Số chia / Modulus (b). Cả hai giá trị đều có thể là số âm hoặc số thập phân — dùng nút +/- để đổi dấu nhanh chóng. Số chia không được bằng 0, vì phép chia cho 0 là không xác định. Kết quả sẽ hiển thị số dư, thương số nguyên, giá trị modulo theo quy ước "làm tròn xuống" (tùy chọn) và một lời giải được trình bày rõ ràng.

Giải thích công thức

Máy tính này dùng quy ước chia cắt phần thập phân (truncated-division) — đúng theo cách mà toán tử % hoạt động trong C, Java và JavaScript. Trước tiên, thương được cắt bỏ phần thập phân về phía số 0: q = trunc(a / b). Sau đó số dư được tính là n = a - q*b. Vì thương được cắt cụt chứ không làm tròn xuống, nên số dư sẽ mang dấu của số bị chia a. Ví dụ ở đây -5 mod 2 = -1, trong khi quy ước "làm tròn xuống" (floored, hiển thị ở dòng kết quả phụ) lại cho ra 1 vì lấy theo dấu của số chia.

$$\text{a} \bmod \text{b} = \text{a} - \left\lfloor \dfrac{\text{a}}{\text{b}} \right\rceil_{0} \cdot \text{b}$$

$$\begin{gathered} r = \text{a} - q \cdot \text{b} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} q &= \operatorname{trunc}\!\left( \dfrac{\text{a}}{\text{b}} \right) \\ \text{b} &\neq 0 \end{aligned} \right. \end{gathered}$$

Quảng cáo
Sơ đồ a bằng b nhân thương cộng số dư với vòng tròn chia đoạn
Đẳng thức \(\text{a} = \text{b} \cdot q + r\) là cơ sở cho kết quả phép chia lấy dư \(r\).

Ví dụ minh họa

Với a = 5, b = 2: thương là trunc(5/2) = trunc(2.5) = 2, và số dư là 5 - 2x2 = 1. Lời giải: 5 chia 2 được 2 dư 1, và 2 x 2 + 1 = 5. Vậy 5 mod 2 = 1. Một trường hợp với số thập phân: 7.5 mod 2 cho thương trunc(3.75) = 3 và số dư 7.5 - 3x2 = 1.5.

$$\operatorname{trunc}\!\left(\frac{5}{2}\right) = \operatorname{trunc}(2.5) = 2$$

$$5 - 2 \times 2 = 1$$

$$2 \times 2 + 1 = 5 \quad\Rightarrow\quad 5 \bmod 2 = 1$$

$$\operatorname{trunc}(3.75) = 3 \qquad 7.5 - 3 \times 2 = 1.5$$

Câu hỏi thường gặp

Tại sao -5 mod 2 = -1 mà không phải 1? Công cụ này theo quy ước truncated của các ngôn ngữ lập trình, nên số dư mang cùng dấu với số bị chia. Dòng modulo "làm tròn xuống" sẽ cho bạn đáp án theo quy ước toán học (là 1) khi bạn cần kết quả mang dấu của số chia.

Làm sao để kiểm tra một số có chia hết không? Số x chia hết cho b khi và chỉ khi \(x \bmod \text{b} = 0\). Ví dụ \(496 \bmod 4 = 0\) (chia hết), còn \(226 \bmod 4 = 2\) (không chia hết).

Số chia có thể bằng 0 không? Không. Phép chia cho 0 là không xác định, nên máy tính sẽ báo lỗi nếu \(\text{b} = 0\).

Cập nhật lần cuối: