题解
【入门】找数游戏
1 条题解
-
0
解题思路
枚举所有三位数,取出百位、十位、个位。检查三个数字互不相同,且十位数字大于百位和个位。最后判断百位与十位的和不是质数。
参考代码
#include <iostream> using namespace std; int main() { for (int n = 100; n <= 999; n++) { int a = n / 100; int b = n / 10 % 10; int c = n % 10; // 三个数字必须互不相同 if (a == b || a == c || b == c) { continue; } // 十位数字要大于百位和个位之和 if (b <= a + c) { continue; } // 判断百位和十位的和是不是质数 int s = a + b; bool p = true; if (s < 2) { p = false; } for (int i = 2; i * i <= s; i++) { if (s % i == 0) { p = false; } } if (!p) { cout << n << endl; } } return 0; }复杂度分析
这道题最多只进行有限次数的循环,时间复杂度为 O(n);代码只使用了几个变量,空间复杂度为 O(1)。
- 1