酷代码 AI
菜单
服务商

用c++题目描述 质数是指大于 1 1 的自然数中,除了 1 1 和自身之外没有其他约数的数。 例如 7 7 和 11 11 都是质数,而 6 6 不是质数,因为 6 6 除了约数 1 1 和 6 6 之外还有约数 2 2 和 3 3。 输入一个正整数,判断它是否为质数,如是质数则输出 Yes ,否则输出这个数第二小的约数(最小的约数是1)。 输入格式 一行,一个正整数 n n。 输出格式 如果 n n 是质数则输出 Yes,否则输出 n n 第二小的约数。

```cpp #include <iostream> #include <cmath> using namespace std; int main() { int n; cin >> n; if (n <= 1) { cout << "No"; return 0; } bool isPrime = true; int secondSmallestDivisor = n; // 初始化为n本身(第二小约数最大可能值) for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) { isPrime = false; secondSmallestDivisor = i; // i是最小的真约数(大于1) break; } } if (isPrime) { cout << "Yes"; } else { cout << secondSmallestDivisor; } return 0; } ``` 代码说明: 1. 输入正整数n 2. 处理n≤1的特殊情况(非质数) 3. 从2到√n遍历寻找最小真约数 4. 找到约数则不是质数,该约数即为第二小约数(1是最小约数) 5. 未找到约数则是质数,输出"Yes" 6. 否则输出找到的第二小约数 时间复杂度:O(√n) 空间复杂度:O(1) [2025-12-05 23:36:24 | AI问答 | 284点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多