如何用C语言编写一个函数来判断并打印出一定范围内的所有素数?
时间: 2024-11-06 20:24:18 浏览: 36
要使用C语言编写一个函数来判断并打印一定范围内的所有素数,你可以采用“埃拉托斯特尼筛法”(Sieve of Eratosthenes)。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 函数声明
void printPrimes(int start, int end);
// 辅助函数,检查是否为素数
bool isPrime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
// 主函数,打印指定范围内的素数
void printPrimes(int start, int end) {
// 创建一个布尔数组标记数字是否为素数
bool primeArray[end + 1];
memset(primeArray, true, sizeof(primeArray));
// 筛选素数
for (int p = 2; p * p <= end; p++) {
// 如果primeArray[p]还未被标记为非素数
if (primeArray[p]) {
// 将p的所有倍数标记为非素数
for (int i = p * p; i <= end; i += p)
primeArray[i] = false;
}
}
// 打印素数
printf("素数在 %d 到 %d 范围内:\n", start, end);
for (int p = start; p <= end; p++) {
if (primeArray[p])
printf("%d ", p);
}
printf("\n");
}
// 示例调用
int main() {
printPrimes(10, 50); // 输出10到50之间的素数
return 0;
}
```
这个程序会打印出给定范围内所有的素数。注意,`isPrime`函数用于判断单个整数是否为素数,而`printPrimes`函数则利用了这个辅助函数筛选整个范围内的素数。
阅读全文