Máy Tính Modulo (Chia Lấy Dư)
Tính a mod b — số dư khi chia a cho b — kèm thương số, phép kiểm tra q×b+r=a, và bước kiểm tra chia hết theo từng bước rõ ràng.
Cách dùng công cụ
Nhập số bị chia (a) và số chia (b). Công cụ trả về a mod b — số dư còn lại sau khi chia a cho b — cùng với thương số và một phép kiểm tra để xác nhận kết quả.
a mod b = 0 là cách lập trình thường dùng để kiểm tra chia hết: nó nghĩa là b chia hết a, nên a là bội của b.Công thức lõi (đẳng thức modulo)
Mọi phép chia có dư đều thỏa một đẳng thức:
Trong đó q là thương nguyên (số chia b "vào" được bao nhiêu lần) và r là số dư — chính số dư đó là a mod b. Thay số vào đẳng thức này cũng là cách công cụ tự kiểm tra kết quả của mình: q × b + r phải bằng lại a.
Ví dụ đầy đủ — 5 mod 2
dư , suy ra .
Kiểm tra: ✓.
Khi số chia lớn hơn số bị chia
Nếu b > a, số chia "vào" số bị chia 0 lần: thương bằng 0 và số dư chính là a.
Dùng mod để kiểm tra chia hết
x là bội của n khi và chỉ khi x mod n = 0:
- → 496 là bội của 4.
- → 226 không là bội của 4.
Đây là cách lập trình thường dùng để kiểm tra một số có chia hết cho số khác hay không, mà không cần thực hiện phép chia đầy đủ rồi so sánh với số nguyên.
Chẵn lẻ với mod 2
Trường hợp đặc biệt phổ biến nhất là mod 2: dư 0 nghĩa là số chẵn, dư 1 nghĩa là số lẻ.
( là số chẵn; là số lẻ.)
Lưu ý về số âm
Công cụ này chỉ nhận số bị chia và số chia không âm. Khi có số âm, "mod" tách thành hai quy ước khác nhau — modulo làm tròn xuống (số dư mang dấu của số chia) và modulo làm tròn về 0 (số dư mang dấu của số bị chia) — và các ngôn ngữ lập trình không thống nhất % triển khai theo quy ước nào. Giữ cả hai số không âm giúp tránh hoàn toàn sự mập mờ này; kết quả luôn chính xác và khớp với mọi quy ước.
Modulo và số học mô-đun
Vì a mod b luôn nằm trong khoảng từ 0 đến b − 1, nó là nền tảng của số học mô-đun (modular arithmetic) — kiểu "số học đồng hồ" dùng trong mật mã học, băm dữ liệu (hashing) và lập lịch, nơi giá trị quay vòng về 0 khi chạm tới b.
Câu hỏi thường gặp
- 5 mod 2 nghĩa là gì?
- 5 mod 2 hỏi số dư khi chia 5 cho 2. dư , nên .
- Phép toán modulo là gì?
- Modulo (viết là hoặc ) trả về số dư khi chia cho , với . Định nghĩa qua công thức , trong đó là thương nguyên.
- Điều gì xảy ra khi số chia lớn hơn số bị chia?
- Thương bằng 0 và số dư chính là số bị chia, vì số chia không "vào" được lần nào. và .
- Làm sao dùng mod để kiểm tra chia hết?
- Số chia hết cho — và là bội của — khi và chỉ khi . Ví dụ nên 496 là bội của 4, còn nên 226 không phải bội của 4.
- Làm sao dùng mod để kiểm tra số chẵn lẻ?
- Lấy số đó mod 2. Dư 0 nghĩa là số chẵn (); dư 1 nghĩa là số lẻ ().
- Vì sao công cụ này không nhận số âm?
- Quy ước dấu của modulo với số âm khác nhau giữa các ngôn ngữ lập trình (chia làm tròn xuống và chia làm tròn về 0 cho kết quả khác nhau), nên công cụ chỉ dùng trường hợp không âm — rõ ràng và không gây nhầm lẫn.