C语言写出n以内素数个数
时间: 2024-09-15 16:01:39 浏览: 71
找出n以内最大的k个素数c.pdf
在C语言中,计算小于给定整数n的所有质数(素数)的数量可以使用Sieve of Eratosthenes(埃拉托斯特尼筛法)算法,这是一种常见的求素数的算法。以下是一个简单的版本,用于计算不超过n的素数个数:
```c
#include <stdio.h>
int countPrimes(int n) {
if (n <= 1)
return 0; // 因为1不是质数
int limit = sqrt(n); // 只需检查到n的平方根
int count = 0;
bool isPrime[limit+1]; // 初始化所有数字为prime
// 标记从2到sqrt(n)之间的非质数
for (int i = 2; i <= limit; ++i) {
if (isPrime[i]) { // 如果i是质数
for (int j = i * i; j <= limit; j += i) { // 将i的倍数标记为非质数
isPrime[j] = false;
}
}
}
// 统计并返回大于1且为质数的元素个数
for (int i = 2; i <= n; ++i) {
if (isPrime[i])
count++;
}
return count;
}
int main() {
int n;
printf("请输入一个整数n: ");
scanf("%d", &n);
printf("小于 %d 的素数有 %d 个.\n", n, countPrimes(n));
return 0;
}
```
在这个程序中,我们首先创建了一个布尔数组`isPrime[]`,然后使用循环逐步排除非质数,最后统计并返回大于1且为质数的计数。
阅读全文