编程求偶2~n(n为大于2的正整数)中有多少个素数?(C语言)
时间: 2024-12-19 14:17:07 浏览: 3
在C语言中计算2到n之间素数的数量,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种用于查找一定范围内所有素数的有效算法。以下是简单的步骤:
1. 创建一个大小为n+1的布尔数组isPrime,初始值设为true,表示所有数字都是潜在的素数。
2. 从2开始,遍历数组,将每个素数的倍数标记为非素数。例如,如果遇到素数2,那么4、6、8...等都是它的倍数,因此将isPrime[4]、isPrime[6]等设为false。
3. 遍历结束后,isPrime数组中仍为true的位置即为素数。
下面是C语言实现的一个例子:
```c
#include <stdio.h>
#define MAX 100
int countPrimes(int n) {
int isPrime[MAX + 1];
for (int i = 2; i <= MAX; i++) {
isPrime[i] = 1;
}
for (int p = 2; p * p <= n; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= n; i += p) {
isPrime[i] = 0;
}
}
}
int primeCount = 0;
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
primeCount++;
}
}
return primeCount;
}
int main() {
int n;
printf("Enter a number greater than 2: ");
scanf("%d", &n);
int result = countPrimes(n);
printf("Number of primes from 2 to %d: %d\n", n, result);
阅读全文