核心答案: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 532
100 mod 7142
9 mod 330(整除)
5 mod 805(不够除余自身)

负数取模

数学定义:结果与除数同号(非负余数)——−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 m17×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 加密大数模幂运算

常见误区

  1. 余数可以是负数:数学约定余数非负;编程里注意语言差异。
  2. mod 0:除以 0 无意义,mod 0 是错误。
  3. (a/b) mod m = (a mod m)/(b mod m):除法不能直接分配!需要模逆元。
  4. 大数硬算:算 7^2024 mod 10 要找循环节(7,9,3,1 周期 4),不能直接算幂。

用[取模计算器](/c/math/modular)计算任意整数取模与模幂运算。