c语言输入两个均大于1的正整数,求两个正整数之间的所有素数的个数及素数均值,个数为0时不要求均值。(均值保留小数点后两位有效数字)
时间: 2023-08-08 17:08:09 浏览: 93
好的,这是一个C语言编程问题,我可以帮您解答。以下是代码:
```c
#include <stdio.h>
#include <math.h>
int isPrime(int n);
int main() {
int num1, num2, count = 0, sum = 0;
double avg;
printf("请输入两个大于1的正整数:\n");
scanf("%d %d", &num1, &num2);
printf("%d和%d之间的素数有:\n", num1, num2);
for (int i = num1 + 1; i < num2; i++) {
if (isPrime(i)) {
printf("%d ", i);
count++;
sum += i;
}
}
if (count == 0) {
printf("0个素数\n");
} else {
avg = (double)sum / count;
printf("\n共%d个素数,均值为%.2f\n", count, avg);
}
return 0;
}
int isPrime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
代码解释:
首先,我们定义了一个 `isPrime` 函数来判断一个数是否是素数。如果这个数小于等于1,直接返回0;否则从2到它的平方根遍历,如果有能整除它的数,直接返回0,否则返回1。
接着,在 `main` 函数中,我们先输入两个大于1的正整数 `num1` 和 `num2`,然后用一个循环从 `num1+1` 到 `num2-1` 遍历每个数,如果这个数是素数,输出它,同时累加素数的个数 `count` 和素数之和 `sum`。
最后,如果 `count` 等于0,说明没有素数,输出提示信息;否则,计算素数的均值 `avg`,并输出素数个数和均值,其中均值保留两位小数。
希望能帮到您!
阅读全文