酷代码 AI
菜单

两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。 输入 一个正整数n。1 <= n <= 10000。 输出 所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。 样例输入 复制 100 样例输出 复制 3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73

```cpp #include <iostream> #include <vector> #include <cmath> using namespace std; // 判断是否为素数 bool isPrime(int num) { if (num < 2) return false; for (int i = 2; i <= sqrt(num); i++) { if (num % i == 0) return false; } return true; } int main() { int n; cin >> n; vector<pair<int, int>> primePairs; // 从2开始遍历到n-2,检查i和i+2是否都是素数 for (int i = 2; i <= n - 2; i++) { if (isPrime(i) && isPrime(i + 2)) { primePairs.push_back({i, i + 2}); } } // 输出结果 if (primePairs.empty()) { cout << "empty" << endl; } else { for (auto &p : primePairs) { cout << p.first << " " << p.second << endl; } } return 0; } ``` 代码说明: 1. `isPrime`函数判断一个数是否为素数,通过检查从2到√num的整数是否能整除num。 2. 主函数中读取整数n,遍历从2到n-2的每个数i。 3. 检查i和i+2是否都是素数,若是则加入结果列表。 4. 遍历结束后,若结果列表为空输出"empty",否则按行输出每个素数对。 5. 时间复杂度为O(n√n),在n≤10000时完全可行。 [2026-01-11 17:38:02 | AI问答 | 357点数解答]

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