题解
【入门】桐桐数
1 条题解
-
0
解题思路
枚举可能的因数,如果两个因数都为素数,就说明这个数是桐桐数。
参考代码
// 先读入题目给出的输入数据。 // 用简单的循环完成题目要求。 #include <iostream> using namespace std; bool sushu(long long n) { if (n < 2) return false; for (long long i = 2; i * i <= n; i++) { // 能被整除就不是素数。 if (n % i == 0) return false; } return true; } int main() { long long n; cin >> n; bool ok = false; for (long long a = 2; a * a <= n; a++) { // 找到一个因数后,再检查两个因数是否都是素数。 if (n % a == 0 && sushu(a) && sushu(n / a)) ok = true; } if (ok) cout << "It's a Tongtong number." << endl; else cout << "It's not a Tongtong number." << endl; return 0; }复杂度分析
代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。
- 1