C语言代码使用Eratosthenes筛法寻找给定范围内的所有素数,不要使用库
时间: 2024-09-09 07:03:06 浏览: 77
C 代码 计算 1 到 N 之间的素数, 使用 OpenMP 进行并行执行.rar
Eratosthenes筛法是一种古老的算法,用于找到一定范围内所有的质数。以下是使用C语言编写的基本版本,不依赖于任何外部库:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_N 10000 // 可根据需要调整最大范围
// 筛选出MAX_N以内的所有质数
void eratosthenes(int limit) {
bool isPrime[MAX_N + 1];
for (int i = 2; i <= limit; ++i)
isPrime[i] = true;
// 从2开始,将它的倍数标记为非质数
for (int p = 2; p * p <= limit; ++p) {
if (isPrime[p]) {
for (int multiple = p * p; multiple <= limit; multiple += p)
isPrime[multiple] = false;
}
}
// 打印出所有的质数
printf("Prime numbers in the range [2, %d]:\n", limit);
for (int i = 2; i <= limit; ++i)
if (isPrime[i])
printf("%d ", i);
}
int main() {
int start_range = 100; // 输入你想要查找质数的起始范围
int end_range = 500; // 输入你想要查找质数的结束范围
eratosthenes(end_range);
return 0;
}
```
在这个代码中,我们首先创建了一个布尔数组`isPrime[]`来表示每个数字是否为质数。然后通过一个嵌套循环,先标记2及其倍数为非质数,接着遍历到平方根,以此类推。最后打印出符合条件的所有质数。
阅读全文