C语言如何输出指定范围内的素数
时间: 2024-10-22 18:22:56 浏览: 75
在C语言中,输出指定范围内(比如从2到n)的所有素数可以采用“埃拉托斯特尼筛法”(Sieve of Eratosthenes)。这是一个古老而高效的算法,步骤如下:
1. 创建一个大小为n+1的布尔数组isPrime[],并将所有元素初始化为true。这个数组的索引代表数字,isPrime[i]表示i是否是素数。
2. 遍历从2到sqrt(n),对于每个当前的数p:
- 如果isPrime[p]仍然为true,说明p是一个素数。遍历从p^2到n(每次增加p),将isPrime[j]设为false,因为所有j=p*k(k>=2)的数都不是素数。
3. 遍历整个数组,找出那些isPrime[i]仍然为true的数,这些都是范围内的素数。
以下是简单的C代码实现示例:
```c
#include <stdio.h>
#include <math.h>
void printPrimes(int n) {
int limit = sqrt(n);
int isPrime[n + 1];
for (int i = 2; i <= n; i++)
isPrime[i] = 1;
// 打印素数
for (int p = 2; p <= limit; p++) {
if (isPrime[p]) { // 如果当前数是素数
printf("%d ", p); // 输出
for (int i = p * p; i <= n; i += p)
isPrime[i] = 0; // 标记非素数
}
}
}
int main() {
int range_start = 2;
int range_end = 50; // 指定的范围,这里设置为50作为示例
printPrimes(range_end);
return 0;
}
阅读全文