C语言孪生素数 相差为2的两个素数称为孪生素数。例如,3与5,41与43等都是孪生素数。设计程序求出指定区间上的所有孪生素数对。区间上限和下限由键盘获取。输入格式: 区间上限和下限的输入格式: "%ld,%ld" 输出格式: 区间上限和下限的输入提示信息:"please input c,d(c>2):\n" 孪生素数的输出格式:"(%ld,%ld)\n" 所有孪生素数对的总数输出格式: "total=%d\n"
时间: 2024-03-08 19:50:29 浏览: 110
好的,下面是代码实现:
```c
#include <stdio.h>
#include <math.h>
int is_prime(long n) {
if (n <= 1) {
return 0;
}
long i;
for (i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
long c, d, i, count = 0;
printf("please input c,d(c>2):\n");
scanf("%ld,%ld", &c, &d);
if (c % 2 == 0) {
c++;
}
for (i = c; i <= d - 2; i += 2) {
if (is_prime(i) && is_prime(i + 2)) {
printf("(%ld,%ld)\n", i, i + 2);
count++;
}
}
printf("total=%d\n", count);
return 0;
}
```
代码解释:
首先定义了一个函数 `is_prime`,用于判断一个数是否为素数。如果是素数,返回1;否则返回0。
然后使用 `scanf` 从键盘输入区间上限和下限。
由于孪生素数相差为2,所以我们只需要从上限(下限如果是偶数也不可能是孪生素数)开始,每次加2,判断当前数和下一个数是否都为素数。如果是,则输出这一对孪生素数,并且计数器加1。
最后输出孪生素数总数。
需要注意的是,当输入的上限为偶数时,需要将其加1,使其变为奇数。这是因为孪生素数只可能是奇数和奇数之间的差值为2。
阅读全文