🔗

约数与倍数

倍数 = 从 n 开始跳着数;约数 = n 的"朋友"

💡 打个比方

把 12 想成一个爱跳远的小朋友:从 0 出发,每次跳 12 步,落在 12、24、36、48……这些落点全是 12 的倍数。它想跳多久就跳多久,所以倍数数不完。

反过来,能把 12 "整整齐齐切分"的数是它的朋友(约数):1、2、3、4、6、12。朋友名单是固定的,而且总是成对出现:1 配 12、2 配 6、3 配 4。

倍数:n × 1, n × 2, n × 3…… 从小到大无限多个。约数(因数):能整除 n 的数,1 ≤ 约数 ≤ n,有限个,成对出现。

🖼️ 大图看明白

12 的倍数:数轴上"每次跳 12"的落点 —— 跳不完! 0 12 24 36 48 60 ×1 ×2 ×3 ×4 → 一直跳下去…… 每个绿点都是一个倍数:1×12=12、2×12=24、3×12=36、4×12=48 12 的约数:12 的朋友(能整除 12 的数) 1 2 3 4 6 12 朋友成对出现:1 × 12 = 12、2 × 6 = 12、3 × 4 = 12 约数:最小 = 1,最大 = 它自己(12) 个数有限,找完就停 倍数:最小 = 它自己(12),没有最大 数轴上永远跳不完

📏 找约数与倍数,只要 3 步

  1. 第 1 步:求倍数:从 n 开始"跳着数"——n、2n、3n……想数多少数多少。
  2. 第 2 步:求约数:i 从 1 试到 n,n % i == 0 的 i 就是约数。
  3. 第 3 步:约数成对:找到小的一半,大的一半自动出现(a×b=n → a、b 都是约数)。
为什么约数成对?因为 a × b = n。每找到一个小的约数 a,就白捡一个大的约数 b = n ÷ a。所以只试到 √n 就能找出全部约数(第 01 课的技巧)。

💻 C++ 怎么写

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    // 输出 n 的全部约数:i 从 1 到 n,能整除的留下
    for (int i = 1; i <= n; i++) {
        if (n % i == 0)
            cout << i << " ";   // i 是 n 的约数
    }
    cout << "\n";

    // 输出 n 的前 10 个倍数:跳着数
    for (int i = 1; i <= 10; i++)
        cout << n * i << " ";   // n, 2n, 3n, ...
    cout << "\n";
    return 0;
}

✋ 你来试试

题目 1:15 的全部约数是哪些?
1、3、5、15。15 = 3 × 5,所以约数成对:1 配 15、3 配 5。一共 4 个。
题目 2:12 有"最大倍数"吗?12 的最小倍数是多少?
没有最大倍数——12、24、36……一直跳下去没有尽头。最小倍数是 12 自己(1 × 12)。同理:最小约数是 1,最大约数是 12 自己。
🎯 一句话记住:倍数是跳着数(最小是自己、无穷多);约数是朋友(最小是 1、最大是自己、成对出现)。