用C语言定义一个求出一个范围内所有素数的函数,并且使用它
时间: 2023-05-29 17:02:05 浏览: 114
以下是基于埃拉托斯特尼筛法的 C 代码,用于计算从 2 到给定上限的所有素数。您只需调用函数,然后传递一个整数作为参数,该整数是最大搜索范围。
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void find_primes(int limit)
{
bool *primes = malloc(limit * sizeof(bool));
int i, j;
for (i = 0; i <= limit; i++) // 将所有数字设为素数
primes[i] = true;
for (i = 2; i * i <= limit; i++) {
if (primes[i]) { // 如果当前数字是素数
for (j = i * i; j <= limit; j += i) { // 标记所有倍数为非素数
primes[j] = false;
}
}
}
printf("Prime numbers in the range 2 to %d are:\n", limit);
for (i = 2; i <= limit; i++) {
if (primes[i]) {
printf("%d ", i);
}
}
printf("\n");
free(primes);
}
int main()
{
find_primes(50);
return 0;
}
```
这个程序以 50 作为上限来计算所有素数,并将结果打印到控制台。
输出:
```
Prime numbers in the range 2 to 50 are:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
```
阅读全文