编写一个程序,输入一个正整数 ,程序输出  以内的全部素数以及这些素数的个数。c语言
时间: 2024-12-02 12:22:26 浏览: 5
输入整数n,输出1~n的素数
在C语言中,我们可以编写一个程序来找出给定范围内所有的素数及其个数。这里是一个简单的算法实现,使用埃拉托斯特尼筛法(Sieve of Eratosthenes):
```c
#include <stdio.h>
#include <stdbool.h>
// 定义一个数组来表示是否是素数
bool isPrime[10000];
// 筛选出不超过n的所有素数
void sieveOfEratosthenes(int n) {
int limit = sqrt(n); // 只需要筛选到√n
// 初始化所有数为素数
for (int i = 2; i <= limit; i++)
isPrime[i] = true;
// 将每个素数的倍数标记为合数
for (int p = 2; p * p <= limit; p++) {
if (isPrime[p]) {
for (int i = p * p; i <= n; i += p)
isPrime[i] = false;
}
}
}
// 检查并打印素数
void printPrimesAndCount(int n) {
int primeCount = 0;
for (int i = 2; i <= n; i++) {
if (isPrime[i])
printf("%d ", i), primeCount++;
}
printf("\n共有 %d 个素数.\n", primeCount);
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
sieveOfEratosthenes(num);
printPrimesAndCount(num);
return 0;
}
```
阅读全文