用简单素数筛选法求N以内的素数。(C语言) 输入格式 N 输出格式 2~N的素数
时间: 2024-12-10 10:51:30 浏览: 56
sushu.rar_求素数
在C语言中,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来求解这个问题。这是一种经典的算法,它通过不断标记合数(非素数)的位置来找到所有小于或等于N的素数。下面是简单的代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX_N 100000 // 设置最大查找范围
bool is_prime[MAX_N + 1]; // 初始化数组用于记录是否为素数
void sieve_of_eratosthenes(int N) {
for (int i = 2; i <= N; i++) {
is_prime[i] = true; // 默认认为所有的数都是素数
}
for (int p = 2; p * p <= N; p++) {
if (is_prime[p]) {
// 将p的所有倍数标记为合数
for (int i = p * p; i <= N; i += p) {
is_prime[i] = false;
}
}
}
}
int main() {
int N;
printf("请输入一个正整数N:");
scanf("%d", &N);
sieve_of_eratosthenes(N);
printf("2至%d之间的素数有:\n", N);
for (int i = 2; i <= N; i++) {
if (is_prime[i])
printf("%d ", i);
}
printf("\n");
return 0;
}
```
当你运行此程序并输入 `N` 时,它将输出2到 `N` 之间的所有素数。
阅读全文