c语言埃氏筛法判断素数
时间: 2023-11-20 16:55:43 浏览: 130
以下是使用C语言实现埃氏筛法判断素数的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1) {
return false;
}
bool *is_prime = (bool *)malloc(sizeof(bool) * (n + 1));
for (int i = 2; i <= n; i++) {
is_prime[i] = true;
}
for (int i = 2; i * i <= n; i++) {
if (is_prime[i]) {
for (int j = i * i; j <= n; j += i) {
is_prime[j] = false;
}
}
}
bool result = is_prime[n];
free(is_prime);
return result;
}
int main() {
int n = 17;
if (is_prime(n)) {
printf("%d is a prime number.\n", n);
} else {
printf("%d is not a prime number.\n", n);
}
return 0;
}
```
该程序首先判断输入的数是否小于等于1,如果是,则直接返回false,因为1不是素数。然后使用动态数组is_prime来记录每个数是否为素数,初始化时将所有数都标记为素数。接下来从2开始遍历到n,如果当前数是素数,则将其所有倍数都标记为非素数。最后返回is_prime[n]的值,即n是否为素数。
阅读全文