求n以内的素数欧氏筛C语言
时间: 2024-11-27 12:20:52 浏览: 6
输出n以内的所有素数 c语言:找出N以内的所有素数
欧拉筛法(Sieve of Eratosthenes),又称欧几里得筛法,是一种用于寻找一定范围内所有质数的经典算法。以下是使用C语言实现求n以内素数的一个简单版本:
```c
#include <stdio.h>
#define MAX_N 100000 // 可视化调整范围
// 初始认为从2到MAX_N都是质数
int isPrime[MAX_N + 1] = {1};
// 根据欧拉筛法,将合数标记为0
void sieveOfEratosthenes(int n) {
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
// 将i的倍数标记为合数
for (int j = i * i; j <= n; j += i)
isPrime[j] = 0;
}
}
}
// 输出n以内的所有素数
void printPrimes(int n) {
printf("素数列表(%d以内):\n", n);
for (int i = 2; i <= n; i++)
if (isPrime[i])
printf("%d ", i);
printf("\n");
}
int main() {
int n;
printf("请输入一个整数n:");
scanf("%d", &n);
sieveOfEratosthenes(n); // 过滤出n以内的素数
printPrimes(n);
return 0;
}
```
阅读全文