设计一个函数fun(m,n),其中2<=m<n,输出[m,n]之间的素数c语言代码
时间: 2023-07-14 22:13:34 浏览: 92
国家计算机二级C语言机试程序设计试题及答案.doc
以下是一个使用筛选法(Sieve of Eratosthenes)来求解的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void fun(int m, int n) {
// 初始化一个布尔数组,用于记录是否为素数
bool *is_prime = (bool*) malloc((n + 1) * sizeof(bool));
for (int i = 2; i <= n; i++) {
is_prime[i] = true;
}
// 筛选法求解素数
for (int i = 2; i * i <= n; i++) {
if (is_prime[i]) {
for (int j = i * i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
// 输出 [m, n] 范围内的素数
for (int i = m; i <= n; i++) {
if (is_prime[i]) {
printf("%d ", i);
}
}
free(is_prime);
}
int main() {
int m = 2, n = 100;
fun(m, n);
return 0;
}
```
在这个实现中,我们首先初始化一个布尔数组 `is_prime`,并将所有元素都标记为 `true`。接着我们使用筛选法来判断素数,最后输出 `[m, n]` 范围内的素数。需要注意的是,在输出素数时,我们只输出 `m` 到 `n` 范围内的素数,因为题目要求的就是这个范围内的素数。
阅读全文