酷代码 AI
菜单

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

```cpp #include <iostream> int main() { int n; std::cin >> n; // 如果 n 小于等于 1,它不是质数 if (n <= 1) { std::cout << (n > 1? "Yes" : 0) << std::endl; return 0; } // 从 2 开始检查约数 for (int i = 2; i * i <= n; ++i) { if (n % i == 0) { // 找到第二小的约数 std::cout << i << std::endl; return 0; } } // 如果没有找到除 1 和自身之外的约数,n 是质数 std::cout << "Yes" << std::endl; return 0; } ``` 代码解释 1. 输入处理:使用 `std::cin` 读取用户输入的正整数 `n`。 2. 特殊情况处理:如果 `n` 小于等于 1,它不是质数,根据题目要求输出结果。 3. 检查约数:从 2 开始遍历到 `sqrt(n)`,如果 `n` 能被 `i` 整除,说明 `n` 不是质数,输出 `i` 作为第二小的约数。 4. 质数判断:如果没有找到除 1 和自身之外的约数,说明 `n` 是质数,输出 `Yes`。 复杂度分析 - 时间复杂度:$O(\sqrt{n})$,因为只需要遍历到 `sqrt(n)`。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 [2025-11-08 21:02:42 | AI问答 | 402点数解答]

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