欧拉筛法的C语言代码
时间: 2024-10-17 17:12:15 浏览: 106
下面是一个简单的C语言代码示例,展示了如何使用欧拉筛法找出某个范围内所有的素数:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_RANGE 1000000
// 初始化素数数组,并设置为真
bool is_prime[MAX_RANGE+1] = {true};
void sieve_of_eratosthenes(int n) {
int i, j;
for (i = 2; i * i <= n; i++) {
// 如果is_prime[i]仍然为真,则i是素数
if (is_prime[i]) {
// 更新i的倍数,将它们标记为合数
for (j = i * i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
}
// 输出指定范围内的素数
void print_primes(int start, int end) {
printf("素数在 %d 到 %d 范围内:\n", start, end);
for (int i = start; i <= end; i++) {
if (is_prime[i])
printf("%d ", i);
}
printf("\n");
}
int main() {
sieve_of_eratosthenes(MAX_RANGE); // 计算所有小于MAX_RANGE的素数
print_primes(1, MAX_RANGE); // 输出1到MAX_RANGE之间的素数
return 0;
}
```
在这个代码中,我们首先创建了一个布尔数组`is_prime[]`,然后通过循环逐步筛选出素数。`sieve_of_eratosthenes`函数负责筛选,而`print_primes`函数则打印出特定范围内的素数。
阅读全文
相关推荐
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)