top1编程
← 返回题目
题解

【入门】请问一个整数n能够被2、3、5、7中哪些数整除

1 条题解

  • 0
    @ 2026-7-31 14:16:58

    解题思路

    题目要求判断 n 能被 2、3、5、7 中的哪些整除,从小到大输出。

    思路很简单:

    依次判断 n 能不能被 2、3、5、7 整除,用取余来判断:

    • 如果 n % 2 == 0,说明能被 2 整除,输出 2
    • 如果 n % 3 == 0,说明能被 3 整除,输出 3
    • 以此类推

    为什么按 2、3、5、7 顺序判断? 因为输出要从小到大,而 2、3、5、7 正好从小到大。

    注意:每个判断都是独立的 if,不能用 else if。因为 n 可能同时被多个数整除(比如 30 能被 2、3、5 都整除),都要输出。

    举例 n=20:

    • 20%2==0 → 输出 2
    • 20%3==2 ≠ 0,不输出
    • 20%5==0 → 输出 5
    • 20%7==6 ≠ 0,不输出

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        if (n % 2 == 0) cout << "2" << endl;
        if (n % 3 == 0) cout << "3" << endl;
        if (n % 5 == 0) cout << "5" << endl;
        if (n % 7 == 0) cout << "7" << endl;
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(1),只有 4 次判断
    • 空间复杂度:O(1)
    • 1