🧱
质因数分解
把合数城堡拆回素数积木,拆法只有一种
💡 打个比方
合数就像用素数积木搭起来的城堡。把 36 这座城堡拆开:先拆成 6 和 6,再把每个 6 拆成 2 和 3。最后得到 4 块素数积木:2、2、3、3。
神奇的地方:不管你先拆哪边(36 = 4 × 9 也行),最后拿到的积木永远是一样的。这就是"唯一分解"(第 15 课细讲)。
把合数写成素数连乘的形式,叫质因数分解。例如 36 = 2 × 2 × 3 × 3,其中 2 和 3 是 36 的质因数。
🖼️ 大图看明白
📏 试除法分解,只要 3 步
- 第 1 步:从 2 开始,n 能被 2 整除就一直除,把每个 2 记下来。
- 第 2 步:换下一个数 3、4、5……重复"除尽再换",一直试到 i×i > n。
- 第 3 步:如果最后剩的数 > 1,它本身就是大质因数,记上。分解完成!
为什么试到 i×i > n 就停?剩下的数如果还有因数,那只能是一个"大质因数"了——因为两个大于 √n 的数相乘会超过 n。所以剩下的大于 1 的数一定是素数。
💻 C++ 怎么写
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int x = n; // x 是当前剩下的数
cout << n << " = ";
for (int i = 2; i * i <= x; i++) {
while (x % i == 0) { // 除尽再换下一个
cout << i << " × ";
x /= i;
}
}
if (x > 1) cout << x; // 剩下的大质因数
cout << "\n";
return 0;
}
// 输入 36 → 36 = 2 × 2 × 3 × 3
// 输入 60 → 60 = 2 × 2 × 3 × 5
// 输入 13 → 13 = 13(本身就是素数)
✋ 你来试试
题目 1:60 的质因数分解是什么?
60 = 2 × 30 = 2 × 2 × 15 = 2 × 2 × 3 × 5。质因数是 2、2、3、5。(2 出现 2 次,3 和 5 各 1 次,可以写成 60 = 2² × 3 × 5。)
题目 2:36 可以先拆成 4 × 9,也可以拆成 2 × 18,为什么最终结果一样?
4 = 2×2,9 = 3×3,所以 4×9 的积木是 2,2,3,3;2×18 = 2×2×3×3,积木也是 2,2,3,3。不管先拆哪,素数积木的数量和种类都一样——这就是唯一分解(第 15 课)。分解还是求 GCD/LCM 的备用方法(第 02 课)。
🎯 一句话记住:质因数分解 = 把城堡拆成素数积木,拆法唯一;试除法口诀:2 除尽、换 3、再换 4……剩下的大数必是素数。