用c语言求区间[2,100]内所有的素数存于数组a中
时间: 2025-01-03 14:44:41 浏览: 51
在C语言中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找到给定范围内的所有素数。这个算法的基本思想是从最小质数开始,将它的倍数标记为合数,然后继续寻找下一个未被标记的数作为新的质数,直到达到范围的最大值。以下是使用这种方法的简单示例:
```c
#include <stdio.h>
#include <stdbool.h>
void sieve_of_eratosthenes(int n, int a[]) {
bool is_prime[n+1];
for (int i = 0; i <= n; i++) {
is_prime[i] = true;
}
// 0和1不是素数
a[0] = 2;
if (n > 1) {
a[1] = 3;
is_prime[2] = false;
}
int p = 2;
while (p * p <= n) {
// 如果is_prime[p] == true, p就是素数
if (is_prime[p]) {
for (int i = p * p; i <= n; i += p) {
is_prime[i] = false; // 标记i的倍数为合数
}
}
p++;
}
// 将剩余的素数填充到数组a中
for (int i = p; i <= n; i++) {
if (is_prime[i]) {
a[i - 2] = i; // 注意索引从2开始
}
}
}
int main() {
const int range_start = 2;
const int range_end = 100;
int prime_array[range_end - range_start + 1]; // 用于存储素数
sieve_of_eratosthenes(range_end, prime_array);
printf("区间 [%d, %d] 内的所有素数:\n", range_start, range_end);
for (int i = 0; i < range_end - range_start; i++) {
printf("%d ", prime_array[i]);
}
printf("\n");
return 0;
}
```
阅读全文
相关推荐



















