题解
【入门】请问一个整数n能够被2、3、5、7中哪些数整除
1 条题解
-
0
解题思路
题目要求判断 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