定义西数 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-12 08:10:00 浏览: 85
以下是题目所需的代码实现:
```c
#include <stdio.h>
// 判断是否为素数
char prime(int n) {
if (n < 2) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
// 输入一个不小于2的无符号正整数
unsigned int input_uinto() {
unsigned int n;
do {
printf("请输入一个不小于2的正整数:");
scanf("%u", &n);
} while (n < 2);
return n;
}
// 取得两个正整数
void get2int(unsigned *n1, unsigned *n2) {
do {
*n1 = input_uinto();
*n2 = input_uinto();
} while (*n1 >= *n2);
}
// 按行打印输出二维数组的值
void printa(unsigned primes[][2], int n) {
for (int i = 0; i < n; i++) {
printf("%u %u\n", primes[i][0], primes[i][1]);
}
}
int main() {
unsigned int n1, n2;
get2int(&n1, &n2);
int cnt = 0;
unsigned primes[1000][2];
for (unsigned int i = n1; i <= n2 - 2; i++) {
if (prime(i) && prime(i + 2)) {
primes[cnt][0] = i;
primes[cnt][1] = i + 2;
cnt++;
}
}
printa(primes, cnt);
return 0;
}
```
该程序会先调用 `get2int` 函数获取两个正整数 `n1` 和 `n2`,然后遍历从 `n1` 到 `n2-2` 的所有整数,如果找到了两个相邻的素数,就将它们存入一个二维数组 `primes` 中,并将数组元素个数存入变量 `cnt` 中。最后调用 `printa` 函数按行输出 `primes` 中的所有元素。
阅读全文