编写一个程序,输入一个正整数,统计并输出从1到n之间的质数数量
时间: 2024-10-14 17:18:44 浏览: 34
为了编写一个C语言程序来统计并输出从1到n之间的质数数量,首先我们需要理解什么是质数。质数是指大于1的自然数,除了1和它自身外,没有其他正因数的数。
以下是一个简单的C程序示例,使用了埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出指定范围内的所有质数:
```c
#include <stdio.h>
void countPrimes(int n) {
// 创建一个布尔数组,标记每个数字是否为质数
int isPrime[n+1];
for (int i = 0; i <= n; i++) {
isPrime[i] = 1;
}
// 标记1不是质数
isPrime[0] = isPrime[1] = 0;
// 遍历从2开始到sqrt(n),如果isPrime[i]为1,则i是质数,将其倍数标记为非质数
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = 0;
}
}
}
// 统计并打印质数的数量
int primeCount = 0;
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
primeCount++;
printf("%d ", i); // 输出质数
}
}
printf("\nTotal number of primes from 1 to %d: %d\n", n, primeCount);
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
countPrimes(n);
return 0;
}
```
在这个程序中,我们首先创建了一个大小为n+1的布尔数组`isPrime`,然后用循环去除掉所有合数。接着遍历数组并计算质数个数。最后,主函数读取用户输入的n值并调用`countPrimes`函数。
运行这个程序时,请确保输入的是正整数。
阅读全文