请统计出n以内所有的素数个数。 输入格式: 请给出最大整数以内的一个数字n。 输出格式: 输出n以内素数的个数。用C语言
时间: 2024-09-20 09:17:08 浏览: 98
在C语言中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出一定范围内(包括n)的所有素数。这是一种古老的算法,通过遍历并标记每一个数是否为素数来进行计算。以下是基本的C程序实现:
```c
#include <stdio.h>
// 计算并返回n以内的素数个数
int countPrimes(int n) {
// 素数数组,所有初始值设为0(除了第一个数)
int primes[n+1];
for (int i = 2; i <= n; i++) {
primes[i] = 1;
}
// 遍历到√n,如果i是素数,则将它的倍数标记为非素数
for (int i = 2; i * i <= n; i++) {
if (primes[i]) {
for (int j = i * i; j <= n; j += i) {
primes[j] = 0;
}
}
}
// 统计并返回素数个数
int primeCount = 0;
for (int i = 2; i <= n; i++) {
if (primes[i]) {
primeCount++;
}
}
return primeCount;
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
printf("n以内的素数个数是: %d\n", countPrimes(n));
return 0;
}
```
在这个程序中,用户需要输入一个正整数n,程序会计算并输出n以内的素数个数。
阅读全文
相关推荐


















