top1编程
← 返回题目
题解

【入门】纯粹合数

1 条题解

  • 0
    @ 2026-7-30 1:34:54

    解题思路

    枚举所有三位数,分别判断它本身、去掉个位后的数和百位数是不是合数。

    参考代码

    // 先读入题目给出的输入数据。
    // 用简单的循环完成题目要求。
    #include <iostream>
    using namespace std;
    
    bool he(int n) {
        if (n < 4) return false;
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) return false;
        }
        return true;
    }
    
    bool heShu(int n) {
        if (n < 4) return false;
        for (int i = 2; i * i <= n; i++) {
            // 找到因数才是合数。
            if (n % i == 0) return true;
        }
        return false;
    }
    
    int main() {
        for (int n = 100; n <= 999; n++) {
            // 依次检查三位数、去掉一位后的数和最后的一位数。
            if (heShu(n) && heShu(n / 10) && heShu(n / 100)) {
                cout << n << endl;
            }
        }
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。

    • 1