c语言用筛选法求100以内的素数
时间: 2024-11-27 08:17:18 浏览: 23
筛选法(也叫埃拉托斯特尼筛法)是一种古老而高效的求解素数的方法,尤其适合于寻找一定范围内的所有素数。以下是使用C语言实现100以内素数筛选的基本步骤:
```c
#include <stdio.h>
void sieve_of_eratosthenes(int n) {
// 初始化一个布尔数组,所有元素都标记为质数(true)
int primes[n+1];
for (int i = 0; i <= n; i++) {
primes[i] = 1;
}
// 从2开始,因为2是最小的质数
for (int p = 2; p * p <= n; p++) {
// 如果primes[p]还未被修改,说明p是素数
if (primes[p]) {
// 将p的倍数标记为合数
for (int i = p * p; i <= n; i += p)
primes[i] = 0;
}
}
// 输出100以内的素数
printf("素数:");
for (int p = 2; p <= n; p++)
if (primes[p])
printf("%d ", p);
}
int main() {
sieve_of_eratosthenes(100);
return 0;
}
```
在这个程序中,我们首先创建一个大小为n+1的布尔数组,然后遍历从2到√n,将每个素数的倍数标记为非素数(合数)。最后,打印出未被标记的所有数字,即为100以内的素数。
阅读全文