(1)定义西数 char prime(nt n),判断n是否素数,若是返回1,否则返回0; (2定义西数 unsigned int input_uinto 输入一个不小于2的无符号正整数,并返回该数值;若不符合,则重新输入直至输入数据合法; (2)定义函數 void get2int(unsigned n12(2),调用(2)的西数取得两个正整数nIn2,使得n1211J=nltn2、n1210J=n1 (4)定义西数printa(unsigned primsO(21.n),可以按行打印输出二维数组的值。。 (5)定义主西数main0。调用前述的西数查找指定整数区间内的孪生索数对,并统计孪生紊数的组数保存到一个二维数组中primesO[2],然后输出该数组。
时间: 2024-02-13 08:59:46 浏览: 128
以下是代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
// 判断是否为素数,是返回1,否则返回0
char prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
// 输入一个不小于2的无符号正整数,并返回该数值;若不符合,则重新输入直至输入数据合法
unsigned int input_uinto() {
unsigned int n;
do {
cout << "请输入一个不小于2的正整数:" << endl;
cin >> n;
} while (n < 2);
return n;
}
// 调用input_uinto的函数,取得两个正整数n1、n2,使得n1*n2=n
void get2int(unsigned int n, unsigned int& n1, unsigned int& n2) {
for (int i = sqrt(n); i >= 2; i--) {
if (n % i == 0 && prime(i) && prime(n / i)) {
n1 = i;
n2 = n / i;
return;
}
}
}
// 按行打印输出二维数组的值
void printa(unsigned int a[][2], int n) {
for (int i = 0; i < n; i++) {
cout << a[i][0] << " " << a[i][1] << endl;
}
}
int main() {
// 输入整数区间
unsigned int start, end;
cout << "请输入一个正整数区间[start, end]: " << endl;
cin >> start >> end;
// 统计孪生素数对的个数
int count = 0;
for (unsigned int n = start; n <= end - 2; n++) {
unsigned int n1, n2;
get2int(n, n1, n2);
if (n2 - n1 == 2) {
count++;
}
}
// 输出孪生素数对的个数
cout << "在[" << start << ", " << end << "]区间内,共有" << count << "组孪生素数对。" << endl;
// 统计孪生素数对的组数并保存到数组中
unsigned int primesO[count][2];
int index = 0;
for (unsigned int n = start; n <= end - 2; n++) {
unsigned int n1, n2;
get2int(n, n1, n2);
if (n2 - n1 == 2) {
primesO[index][0] = n1;
primesO[index][1] = n2;
index++;
}
}
// 输出保存孪生素数对的数组
cout << "孪生素数对数组为:" << endl;
printa(primesO, count);
return 0;
}
```
注意:由于 `primesO` 数组的大小是在运行时动态计算的,因此需要使用变长数组(C99 和 C11 支持),或者使用动态内存分配(`malloc`、`new` 等),或者使用 `std::vector` 等 STL 容器。上述代码使用的是变长数组。如果使用 `std::vector`,可以将 `unsigned int primesO[count][2];` 替换为 `std::vector<std::vector<unsigned int>> primesO(count, std::vector<unsigned int>(2));`。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)