c语言编程求 2 ∼ n 2∼n,( n n 为不小于 2 的正整数)中有多少个素数
时间: 2024-09-26 14:02:03 浏览: 70
在 C 语言中,计算从 2 到 n^2 中有多少个素数可以采用一些算法,比如埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种用于查找一定范围内所有质数的有效方法。以下是基本思路:
1. 创建一个大小为 n^2+1 的布尔数组,初始化所有元素为 true,表示它们都是潜在的质数。
2. 遍历从 2 开始的所有数字,将每个素数的倍数标记为非素数。因为除了 1 和本身外,一个合数必定有某个小于它的因数。
3. 遍历数组,遇到值为 true 的位置就表示当前位置是素数,并计数。
下面是伪代码形式的示例:
```c
int countPrimes(int n) {
int limit = n * n;
bool isPrime[limit + 1];
memset(isPrime, true, sizeof(isPrime));
for (int i = 2; i * i <= limit; i++) {
if (isPrime[i]) { // 如果i是素数
for (int j = i * i; j <= limit; j += i) {
isPrime[j] = false; // 标记j的倍数不是素数
}
}
}
int primeCount = 0;
for (int i = 2; i <= limit; i++) {
if (isPrime[i]) {
primeCount++;
}
}
return primeCount;
}
```
阅读全文