核心答案:a mod m = a 除以 m 的余数。17 mod 5 = 2(17=3×5+2)。三大性质:和的余数=余数的和、积的余数=余数的积、幂的余数可循环——这是钟表、密码、哈希表的数学基础。
取模的定义
a mod m = r,其中 a = q×m + r,0 ≤ r < m
| 算式 | 商 | 余数 |
|---|---|---|
| 17 mod 5 | 3 | 2 |
| 100 mod 7 | 14 | 2 |
| 9 mod 3 | 3 | 0(整除) |
| 5 mod 8 | 0 | 5(不够除余自身) |
负数取模
数学定义:结果与除数同号(非负余数)——−7 mod 3 = 2(因为 −7=−3×3+2)
注意:编程语言不统一!
- Python:−7 % 3 = 2(数学约定)
- C/Java/JS:−7 % 3 = −1(截断除法)
- 统一写法:(a % m + m) % m 保证非负
同余与运算性质
记号 a≡b (mod m):a、b 除以 m 余数相同。
| 性质 | 公式 | 例 |
|---|---|---|
| 加法 | (a+b) mod m = ((a mod m)+(b mod m)) mod m | (17+23) mod 5 = (2+3) mod 5 = 0 |
| 乘法 | (a×b) mod m = ((a mod m)(b mod m)) mod m | 17×23 mod 5 = 2×3 mod 5 = 1 |
| 幂 | 底数先取模再幂 | 17¹⁰⁰ mod 5 = 2¹⁰⁰ mod 5 |
快速心算技巧
末位判定系:
- mod 2:看末位奇偶
- mod 5:看末位(0/5 余 0,1/6 余 1…)
- mod 4:看末两位(1236 → 36 mod 4 = 0)
- mod 8:看末三位
mod 3/9:各位数字和。12345 → 1+2+3+4+5=15 → 15 mod 9 = 6。
mod 11:奇偶位交错和。2728 → (8+7)−(2+2)=11 → 整除。
实际应用
| 场景 | 用法 |
|---|---|
| 星期推算 | 天数差 mod 7 |
| 时钟 | 小时 mod 12 |
| 哈希表 | key mod 桶数 |
| 循环数组/轮询 | i mod n |
| 校验码 | 身份证末位 mod 11 |
| RSA 加密 | 大数模幂运算 |
常见误区
- 余数可以是负数:数学约定余数非负;编程里注意语言差异。
- mod 0:除以 0 无意义,mod 0 是错误。
- (a/b) mod m = (a mod m)/(b mod m):除法不能直接分配!需要模逆元。
- 大数硬算:算 7^2024 mod 10 要找循环节(7,9,3,1 周期 4),不能直接算幂。
用[取模计算器](/c/math/modular)计算任意整数取模与模幂运算。