c语言,fun函数求m到n之间的素数
时间: 2025-06-25 08:03:10 浏览: 19
### C语言实现求解m到n之间素数的方法
以下是基于C语言编写的`fun`函数,用于计算并打印从整数`m`到`n`之间的所有素数:
#### 函数设计说明
为了满足需求,定义了一个名为`isPrime`的辅助函数来判断某个数是否为素数。接着,在主函数中调用该辅助函数遍历范围内的每一个数。
```c
#include <stdio.h>
#include <math.h>
// 判断一个数是否为素数
int isPrime(int num) {
if (num <= 1) return 0; // 小于等于1的数不是素数
int sqrtNum = (int)sqrt((double)num);
for (int i = 2; i <= sqrtNum; ++i) {
if (num % i == 0) return 0;
}
return 1;
}
// 主函数实现求解m到n之间的素数
void fun(int m, int n) {
if (m > n) { // 如果起始值大于结束值,则交换两者顺序
int temp = m;
m = n;
n = temp;
}
int count = 0; // 记录找到的素数数量
for (int i = m; i <= n; ++i) {
if (isPrime(i)) { // 调用辅助函数判断当前数是否为素数
printf("%d ", i); // 打印素数
count++;
}
}
if (count == 0) {
printf("No prime numbers found in the range [%d, %d].\n", m, n);
} else {
printf("\nTotal primes between [%d, %d]: %d\n", m, n, count);
}
}
int main() {
int m, n;
printf("Enter two integers (m and n): ");
scanf("%d%d", &m, &n);
fun(m, n); // 调用fun函数处理输入数据
return 0;
}
```
#### 功能解释
1. **辅助函数 `isPrime`**:
此函数接收一个整数作为参数,返回值为布尔型(通过整数值模拟),其中`1`代表真(即此数为素数),而`0`则代表假(非素数)。它利用了平方根优化技术减少不必要的循环次数[^2]。
2. **核心逻辑部分**:
- 首先检查传入区间的两个端点大小关系,必要时调整它们的位置以便从小至大迭代。
- 使用for循环逐一访问区间内每个可能成为候选者的数字,并借助前述提到的`isPrime`判定其属性。
- 对符合条件的结果予以输出的同时统计总数目。
3. **边界情况考虑**:
当给定范围内不存在任何素数实例时,程序会特别提示用户这一事实而不是简单地保持沉默[^2]。
#### 测试样例
假设运行上述代码片段之后交互如下所示:
```
Enter two integers (m and n): 10 20
11 13 17 19
Total primes between [10, 20]: 4
```
---
阅读全文
相关推荐
















