5e7范围内质数个数,用c语言
时间: 2024-10-18 15:23:51 浏览: 23
在C语言中计算5e7(即5乘以10的七次方)范围内的质数个数,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这是一种古老的算法,用于找出一定区间内的所有质数。以下是基本步骤:
1. 初始化一个布尔数组,大小为5e7+1,所有元素都初始化为true,表示它们都是潜在的质数。
2. 遍历从2到√(5e7),对于每个质数i,将它的倍数标记为非质数(数组索引对应的位置设为false)。
3. 统计并返回数组中仍然标记为true的元素个数,即为质数的数量。
下面是简化版的C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
#define MAX 5e7
bool isPrime[MAX + 1];
int count = 0;
void sieveOfEratosthenes() {
for (int i = 2; i * i <= MAX; ++i) {
if (isPrime[i]) {
for (int j = i * i; j <= MAX; j += i)
isPrime[j] = false;
}
}
// Count prime numbers
for (int i = 2; i <= MAX; ++i)
if (isPrime[i])
count++;
}
int main() {
sieveOfEratosthenes();
printf("在5e7范围内有 %d 个质数。\n", count);
return 0;
}
```
阅读全文