Skip to content

第 1 章:整数的可除性

这一章说到底是三件事:

能不能除尽?除不尽的话余多少?两个数的最大公约数怎么凑出来?

考试翻来覆去就考这几个操作,尤其是最后的“凑最大公约数”,是后面学密码学(如 RSA 算法)的地基。练熟就行!


一、整除:谁除谁,别搞反了

先看一个符号:a | b

这玩意儿中间是一根竖线,读作“a 整除 b”。 什么意思?就是 b 可以写成 a 乘以某个整数

  • 2 | 6 → 对,因为 6 = 2 × 3
  • 6 | 2 → 错,2 写不成 6 乘整数
  • 3 | 0 → 对,0 = 3 × 0(任何数都能整除 0)

记忆法

竖线左边是“除数”,右边是“被除数”。左边小、右边大才可能成立(除非是 0)。

这一条性质最常用

如果 c | ac | b,那么 c 也能整除 a 和 b 的任意“拼凑”:

c | (sa + tb),不管你 s、t 取什么整数。

什么意思?a 和 b 都是 c 的倍数,那它们随便乘个整数再加加减减,结果还是 c 的倍数。就跟你用乐高积木拼东西一样——积木本身是红色的,拼出来的还是红的。


二、带余除法:余数绝对不能是负数

就是小学除法写成等式:

a = bq + r

a 是被除数,b 是除数(默认正数),q 是商,r 是余数。 唯一要死记的规矩0 ≤ r < b余数必须非负,且必须小于除数。

负数除法——期末连环翻车重灾区

算 -19 除以 5。

错误写法(期末至少一半人会掉这个坑):

-19 = 5 × (-3) + (-4) ← 余数是 -4,不合格!

正确做法

考场口诀:商往小了取(数轴向左看),余数自然正

你按计算器算 -19 ÷ 5 = -3.8。 想象一下数轴,-3.8 左边的整数是谁?是 -4! 所以商就是 -4。 算余数:-19 - 5×(-4) = -19 + 20 = 1。

等式:-19 = 5 × (-4) + 1。检查:0 ≤ 1 < 5 ✓ :::


三、最大公因数 gcd 与“互素”

gcd(a,b) 也写成 (a,b),就是能同时整除 a 和 b 的最大正整数。 注意:最大公因数永远是正的!如果考你 gcd(-252, 198),直接把负号扔掉,等于 gcd(252, 198)

怎么求?辗转相除法:“大 ÷ 小,余数挪下来,继续除”

求 gcd(202, 282): 把 282 ÷ 202,然后把上一行的“除数”当新的“被除数”,“余数”当新的“除数”:

算式余数
282 = 202 × 1 + 8080
202 = 80 × 2 + 4242
80 = 42 × 1 + 3838
42 = 38 × 1 + 44
38 = 4 × 9 + 22 ← 最后一个非0余数,就是答案
4 = 2 × 2 + 00(停)

所以 gcd(202, 282) = 2

整个密码学的核心概念:互素(互质)

如果 gcd(a, b) = 1,我们就说 a 和 b 互素。 只要两个数互素,它们就能通过加减乘除变出“1”。这是后面求“乘法逆元”的绝对前提!


四、扩展欧几里得:把最大公约数“凑出来”

这是第一章最重要的计算题,必考! 题目不光要你知道最大公约数是几,还要你找到整数 x 和 y,使得:

ax + by = gcd(a, b)

例题:求 47x + 30y = gcd(47, 30) 的 x 和 y。

这里提供两种方法,大家可以根据习惯任选其一:

方法一:传统回代法(像剥洋葱)

分成两段:先往下除(普通辗转相除),再往回代(扩展部分)。

第一段:往下除,并把余数单独写在左边

47 = 30 × 1 + 17 → 17 = 47 - 30×1

30 = 17 × 1 + 13 → 13 = 30 - 17×1

17 = 13 × 1 + 4 → 4 = 17 - 13×1

13 = 4 × 3 + 1 → 1 = 13 - 4×3

4 = 1 × 4 + 0 → 余 0,停

第二段:倒着往回代(每次只替换一个数) 目标是把 1 拼凑成 47 和 30。从最后一个非零余数 ④ 开始:

1 = 13 - 4×3

= 13 - (17 - 13×1) × 3 ← 用 ③ 换掉 4,并合并 13

= 13×4 - 17×3

= (30 - 17×1) × 4 - 17×3 ← 用 ② 换掉 13,并合并 17

= 30×4 - 17×7

= 30×4 - (47 - 30×1) × 7 ← 用 ① 换掉 17,并合并 30

= 30×11 - 47×7

调整成 47x + 30y 的形式:1 = 47 × (-7) + 30 × 11 所以 x = -7,y = 11


方法二:考场开挂列表法(防手残推荐)

回代法拆括号极其容易算错正负号。强烈建议在考场上用表格法,从上往下算,绝不翻车!

规则:

  1. 前两行写死:第一行写大数 47,设 x=1, y=0;第二行写小数 30,设 x=0, y=1。
  2. 从第三行开始:当前行 = 上上行 - 商 × 上一行(商就是普通的辗转相除的商)
行号商 q余数 rxy这是怎么算的?(考场不用写这列)
-14710(初始化写死)
03001(初始化写死)
11171-1r: 47 - 1×30 = 17
x: 1 - 1×0 = 1
y: 0 - 1×1 = -1
2113-12r: 30 - 1×17 = 13
x: 0 - 1×1 = -1
y: 1 - 1×(-1) = 2
3142-3r: 17 - 1×13 = 4
x: 1 - 1×(-1) = 2
y: -1 - 1×2 = -3
431-711r: 13 - 3×4 = 1
x: -1 - 3×2 = -7
y: 2 - 3×(-3) = 11

当余数 r 算到最大公约数(这里是 1)时,直接看最后一行,答案出来了:

x = -7,y = 11

验证:47×(-7) + 30×11 = -329 + 330 = 1 ✓


五、最小公倍数 lcm:一条公式秒杀

最小公倍数记作 [a, b]lcm(a, b)只需要记住这一条公式

[a, b] = (a × b) / gcd(a, b)

也就是说,先算 gcd,再用乘积除以它

例题:求 [78, 169] 先求 gcd(78, 169) = 13 套公式:[78, 169] = 78 × 169 / 13 = 6 × 169 = 1014


六、判断素数:试到 √n 就够了

判断一个数 n 是不是素数,试到 √n 就行。 因为如果 n = a × b,a 和 b 不可能两个都比 √n 大。

例题:101 是不是素数? √101 ≈ 10.05,所以只要试到 10 以内的素数(2, 3, 5, 7)。 全不整除 → 101 是素数


七、标准分解式:从小素数开始一直除

做法:从 2 开始,能除就除,除不动了换下一个素数

例题:分解 1176 1176 ÷ 2 = 588 → ÷ 2 = 294 → ÷ 2 = 147 → ÷ 3 = 49 = 7 × 7 所以 1176 = 2³ × 3 × 7²


🚀 本章做题速查表(考前 5 分钟必看)

看到题目里有什么立刻想
a | bb 能写成 a × 整数吗?(左小右大)
被除数是负数计算器算完商往左看,余数必须正!
求 gcd辗转相除,除到余 0。如果是负数直接扔掉负号。
ax + by = gcd(a,b)扩展欧几里得,推荐画表格从上往下算。
题目说“两者互素”它们的 gcd 是 1,存在 ax + by = 1
求 lcma×b / gcd
判断素数试除到 √n 就行

☠️ 历年期末最容易翻车的地方

  1. 负数带余除法:算出个负的余数,整道题直接 0 分。记住商往数轴左边取。
  2. gcd(-a, b):最大公约数不可能有负数!自带的负号直接当没看见。
  3. 扩展欧几里得符号算错:用传统回代法拆括号时,减号后面特别容易算错,算完务必验算一遍。
  4. lcm 公式:别忘了先算 gcd,直接把两个数乘起来会偏大。

自测题(满分过关才能看下一章)

  1. 判断 7 | 91 是否成立。
  2. 求 -27 被 5 除的商和余数。(避坑测试)
  3. 求 gcd(-55, 85)。(避坑测试)
  4. 求 gcd(368, 299, 552)。(提示:先算两个,再和第三个算)
  5. 求整数 x, y,使得 66x + 75y = gcd(66, 75)。
  6. 求 lcm(49, 77)。

自测答案

  1. 成立,91 = 7 × 13。
  2. 计算器 -27/5 = -5.4,数轴向左取商为 -6。余数 = -27 - 5×(-6) = 3
  3. 负号扔掉,求 gcd(55, 85) = 5
  4. gcd(368, 299) = 23,gcd(23, 552) = 23,答案是 23
  5. gcd(66, 75) = 3。可得 x = 8,y = -7。(验证:66×8 + 75×(-7) = 528 - 525 = 3)。
  6. gcd(49, 77) = 7,lcm = 49×77/7 = 49×11 = 539
最近更新