用c++编写程序:两个相差为2的素数称为素数对,如5和7,17和19等,输入一个正整数n。1 <= n <= 10000,输出所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
时间: 2024-04-30 17:17:54 浏览: 109
输入一个正整数,判断是不是素数(C++)
下面是用 C 语言编写的程序,实现了输入一个正整数 n,输出所有小于等于 n 的素数对的功能:
```c
#include <stdio.h>
int isPrime(int num) { // 判断一个数是否是素数
if (num < 2) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n;
scanf("%d", &n);
int lastPrime = 2; // 上一个素数
int found = 0; // 是否找到过素数对
for (int i = 3; i <= n; i += 2) { // 只处理奇数
if (isPrime(i)) {
if (i - lastPrime == 2) {
printf("%d %d\n", lastPrime, i);
found = 1;
}
lastPrime = i;
}
}
if (!found) {
printf("empty\n");
}
return 0;
}
```
程序的思路是:
- 定义函数 `isPrime`,用于判断一个数是否是素数。
- 从 3 开始,对于每个奇数 i,如果它是素数,则与上一个素数 lastPrime 比较是否相差为 2,是则输出一行素数对,同时更新 lastPrime。
- 如果没有找到任何素数对,则输出 empty。
需要注意的是,本题只需要输出小于等于 n 的素数对,而不是小于 n 的素数对。因此,我们只需要处理小于等于 n 的奇数,可以通过 i += 2 实现。同时,由于 2 是最小的素数,我们可以先将 lastPrime 初始化为 2。
阅读全文