埃拉托斯特尼筛法C语言,筛选64以内的素数
时间: 2024-09-08 09:02:51 浏览: 122
C语言用于查找n以内最大的k个素数
埃拉托斯特尼筛法(Sieve of Eratosthenes),是一种简单而有效的筛选素数的方法。它通过迭代的方式,逐步筛选出小于或等于给定数值的所有素数。下面是使用C语言实现筛选64以内的素数的代码示例:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 64
int main() {
int is_prime[MAX_SIZE + 1]; // 创建一个数组,索引代表数字,值表示是否为素数(1为是,0为否)
memset(is_prime, 1, sizeof(is_prime)); // 初始化数组,假设所有数都是素数
is_prime[0] = is_prime[1] = 0; // 0和1不是素数,所以设置为0
// 筛选素数
for (int i = 2; i * i <= MAX_SIZE; ++i) {
if (is_prime[i]) {
for (int j = i * i; j <= MAX_SIZE; j += i) {
is_prime[j] = 0; // 将非素数的位置设为0
}
}
}
// 打印所有素数
printf("64以内的素数有:\n");
for (int i = 2; i <= MAX_SIZE; ++i) {
if (is_prime[i]) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
这段代码首先定义了一个布尔数组`is_prime`,用于标记每个数字是否为素数。然后,通过两层循环来筛选素数:外层循环遍历每一个数,内层循环将找到的素数的倍数标记为非素数。最后,遍历`is_prime`数组并打印出标记为素数的数字。
阅读全文