c++埃拉托色尼筛选法
时间: 2023-11-03 19:57:16 浏览: 159
筛选法求质数表-Acm竞赛常用算法与数据结构
埃拉托斯特尼筛法(Sieve of Eratosthenes)是一种用于找出给定范围内所有素数的古老算法。其基本思想是从2开始,将每个素数的倍数标记为非素数,直到遍历完整个范围。
以下是用 C 语言实现埃拉托斯特尼筛法的代码:
```c
#include <stdio.h>
#include <stdbool.h>
void sieveOfEratosthenes(int n) {
bool primes[n+1];
memset(primes, true, sizeof(primes));
for (int p = 2; p * p <= n; p++) {
if (primes[p] == true) {
for (int i = p * p; i <= n; i += p)
primes[i] = false;
}
}
printf("Prime numbers within the range 2 to %d are:\n", n);
for (int p = 2; p <= n; p++) {
if (primes[p])
printf("%d ", p);
}
}
int main() {
int n;
printf("Enter the upper limit: ");
scanf("%d", &n);
sieveOfEratosthenes(n);
return 0;
}
```
上述代码中,我们首先创建一个布尔数组 `primes` ,用于标记是否为素数。初始时,我们假设所有数字都是素数。
然后,我们从2开始遍历数组,如果当前数字是素数,就将它的倍数标记为非素数。这样我们就能筛选出范围内的素数。
最后,我们打印出范围内的素数。
阅读全文