厄拉多塞筛法求素数c语言代码
时间: 2024-09-21 17:13:31 浏览: 50
厄拉多塞筛法(Sieve of Eratosthenes)是一种古老的算法,用于找出一定范围内所有的素数。以下是简单的C语言代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_PRIME 10000 // 可以根据需要调整
// 初始数组全部标记为素数
bool is_prime[MAX_PRIME + 1] = {true};
void sieve_of_eratosthenes() {
int i, j;
for (i = 2; i * i <= MAX_PRIME; i++) {
if (is_prime[i]) {
for (j = i * i; j <= MAX_PRIME; j += i) {
is_prime[j] = false; // 如果当前数字能被i整除,则不是素数
}
}
}
// 输出所有找到的素数
printf("素数列表: ");
for (i = 2; i <= MAX_PRIME; i++) {
if (is_prime[i])
printf("%d ", i);
}
}
int main() {
sieve_of_eratosthenes();
return 0;
}
```
在这个代码中,我们首先创建一个布尔数组表示从2到`MAX_PRIME`的所有数字是否是素数。然后从2开始,如果它是素数(`is_prime[i]`为真),就将它的倍数标记为非素数。最后,打印出所有剩下的素数。
阅读全文