用c语言用筛选法求素数,输出1000之内所有的素数,并统计个数。
时间: 2024-11-12 21:42:02 浏览: 116
在C语言中,埃拉托斯特尼筛法是一种常用的寻找素数的算法。它通过依次标记每个合数的倍数为非素数,最后剩下的未被标记的就是素数。以下是使用这种方法找出1000以内所有素数并统计个数的简单示例:
```c
#include <stdio.h>
#include <stdbool.h>
void sieve_of_eratosthenes(int limit, bool prime[]) {
// 初始化标志数组,假设所有数都是素数
for (int i = 2; i <= limit; i++)
prime[i] = true;
// 筛选过程:从2开始,将它的倍数标记为合数
for (int p = 2; p * p <= limit; p++) {
// 如果prime[p]还没被改变,说明p是素数
if (prime[p]) {
// 标记p的倍数为非素数
for (int i = p * p; i <= limit; i += p)
prime[i] = false;
}
}
}
int main() {
const int LIMIT = 1000;
bool primes[LIMIT + 1]; // 储存素数的布尔数组
int prime_count = 0; // 统计素数个数
sieve_of_eratosthenes(LIMIT, primes);
printf("1000以内的素数有:\n");
for (int i = 2; i <= LIMIT; i++) {
if (primes[i])
printf("%d ", i), prime_count++; // 输出素数并增加计数
}
printf("\n1000以内的素数总数: %d\n", prime_count);
return 0;
}
```
这段代码首先创建了一个布尔数组`primes[]`来表示每个数是否为素数,然后使用埃拉托斯特尼筛法遍历数组,将素数位置设置为`true`,合数位置设置为`false`。主函数里打印出1000以内所有的素数,并统计个数。
阅读全文
相关推荐


















