C语言代码表示使用Eratosthenes筛法寻找10000以内的素数
时间: 2024-09-09 15:15:27 浏览: 62
C语言线性筛法源代码
Eratosthenes筛法是一种高效寻找素数的方法,也称为素数筛或埃拉托斯特尼筛法。以下是使用C语言表示该算法的基本步骤,目的是找出小于或等于10000的素数:
```c
#include <stdio.h>
#include <string.h>
#define MAX 10000
int main() {
int primes[MAX + 1];
memset(primes, 1, sizeof(primes)); // 初始化标记数组,全部设为1,假设都是素数
primes[0] = primes[1] = 0; // 0和1不是素数,所以设置为0
for (int i = 2; i * i <= MAX; ++i) {
if (primes[i]) { // 如果primes[i]为1,即i是素数
for (int j = i * i; j <= MAX; j += i) {
primes[j] = 0; // 将i的倍数全部标记为0,表示不是素数
}
}
}
// 输出所有小于或等于MAX的素数
for (int i = 2; i <= MAX; ++i) {
if (primes[i]) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
以上代码中,首先定义了一个足够大的数组`primes`,用于标记每个数是否为素数。通过双层循环,外层循环遍历每个数,内层循环将其所有倍数标记为非素数(即将对应数组元素设为0)。最后,通过遍历`primes`数组,输出所有标记为1的索引,即为所有小于或等于10000的素数。
阅读全文