如何使用C语言编程来计算并正确判断1到1000范围内的质数个数?
时间: 2024-10-22 19:21:30 浏览: 32
c语言求出给定范围内的所有质数
在C语言中计算1到1000范围内的质数个数,你可以使用一种常见的算法——埃拉托斯特尼筛法(Sieve of Eratosthenes)。以下是步骤:
1. 初始化一个布尔数组isPrime[1001],所有元素都初始化为true,表示从2到1000都是潜在的质数。
2. 从第一个素数2开始,遍历数组,将它的倍数标记为非质数。例如,对于每个i(从2开始),如果isPrime[i]为true,就将i的倍数(i * j, 其中j从2到sqrt(1000))的isPrime值设为false。这是因为如果一个数不是质数,那么它一定有一个因子小于等于它的平方根。
3. 遍历结束后,数组中isPrime[i]为true的就是质数,统计其中的true计数即为质数的数量。
以下是简单的C代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int countPrimes(int n) {
bool isPrime[n+1];
int primeCount = 0;
// 初始化所有数字为质数
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
// 标记非质数
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
// 统计质数个数
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
primeCount++;
}
}
return primeCount;
}
int main() {
int limit = 1000;
printf("Number of primes between 1 and %d is: %d\n", limit, countPrimes(limit));
return 0;
}
```
阅读全文