C语言编写一个程序,接受两个整数 m 和 n 作为输入,然后输出从 m 到 n 范围内的所有素数,并按照升序排列。能否提供这个算法或代码实现?
时间: 2024-10-22 08:16:17 浏览: 18
当然可以。在C语言中,我们可以使用嵌套循环和条件判断来找出并打印指定范围内的素数。以下是简单的代码实现:
```c
#include <stdio.h>
// 辨别是否为素数的辅助函数
int is_prime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 主函数,接收m和n作为参数
void print_primes(int m, int n) {
for (int i = m; i <= n; i++) {
if (is_prime(i)) {
printf("%d ", i);
}
}
printf("\n");
}
int main() {
int m, n;
printf("请输入起始数字 m: ");
scanf("%d", &m);
printf("请输入结束数字 n: ");
scanf("%d", &n);
// 检查输入的合法性
if (m > n) {
printf("错误:起始数字不能大于结束数字。\n");
return 1;
}
print_primes(m, n);
return 0;
}
```
在这个程序中,`is_prime`函数用于检查一个数字是否为素数,`print_primes`函数则遍历给定范围内的每个数并调用`is_prime`来筛选出素数。记得输入的m和n之间不能有负值。
阅读全文