用c++写 【题目描述】 两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。 【输入】 一个正整数n(1≤n≤10000)。 【输出】 所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
时间: 2024-04-14 14:29:36 浏览: 275
输入一个正整数,判断是不是素数(C++)
以下是使用C++编写的解答:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 判断是否为素数
bool isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
vector<pair<int, int>> primePairs;
for (int i = 2; i <= n - 2; i++) {
if (isPrime(i) && isPrime(i + 2)) {
primePairs.push_back(make_pair(i, i + 2));
}
}
if (primePairs.empty()) {
cout << "empty" << endl;
} else {
for (const auto& pair : primePairs) {
cout << pair.first << " " << pair.second << endl;
}
}
return 0;
}
```
这段代码首先定义了一个函数`isPrime`用于判断一个数是否为素数。然后,通过输入一个正整数n,遍历从2到n-2的每个数,判断其是否为素数,并且与其相差2的数也是素数,如果是,则将这对素数存入`primePairs`数组中。最后,根据`primePairs`数组的情况进行输出。
注意:在C++中,我们使用`pair`和`vector`来存储素数对。`pair`是一个可以存储两个值的数据结构,而`vector`是一个动态数组,可以用来存储多个素数对。
阅读全文