C语言代码如何解释素数筛
时间: 2024-11-17 20:12:07 浏览: 0
素数环 回溯法——C语言代码
在C语言中,实现线性筛法的基本结构如下:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_N 1000000
bool isPrime[MAX_N + 1]; // 初始认为所有数字都是素数
void sieveOfEratosthenes(int n) {
for (int i = 2; i * i <= n; i++) { // 只需检查到√n,节省时间
if (isPrime[i]) { // 如果i是素数
for (int j = i * i; j <= n; j += i) { // 将i的倍数标记为合数
isPrime[j] = false;
}
}
}
for (int p = 2; p <= n; p++)
if (isPrime[p]) printf("%d ", p); // 输出所有的素数
}
int main() {
int limit;
printf("Enter the upper limit: ");
scanf("%d", &limit);
sieveOfEratosthenes(limit);
return 0;
}
```
在这个代码中,`sieveOfEratosthenes`函数实现了线性筛的过程,首先初始化所有的数为素数,然后逐个检查,将每个素数的倍数标记为合数。最后,在`main`函数中获取用户输入的上限,并调用`sieveOfEratosthenes`打印出相应的素数。
阅读全文