用c语言编写输入一个正整数n,输出(2,n)之间的所有素数及素数个数
时间: 2024-10-24 10:16:28 浏览: 120
求n以内最大的k个素数以及它们的和(C)
在 C 语言中,你可以通过以下步骤编写一个程序来输入一个正整数 n,并输出 (2, n) 之间的所有素数以及素数的个数:
1. 首先,你需要创建一个函数 `is_prime` 来检查一个数是否为素数。这个函数会遍历从 2 到该数的平方根,如果发现有因子,则说明不是素数。
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; ++i) {
if (num % i == 0) return false;
}
return true;
}
```
2. 接着,在主函数中,获取用户输入的 n,初始化一个计数器 `count` 和一个数组 `primes` 来存储素数及其个数。
```c
int main() {
int n, count = 0;
printf("请输入一个正整数 n:");
scanf("%d", &n);
// 创建一个大小为 n 的数组存储素数
bool primes[n + 1];
memset(primes, true, sizeof(primes));
// 从 2 开始遍历到 n,如果是素数则输出并增加计数器
for (int i = 2; i <= n; ++i) {
if (primes[i] && is_prime(i)) {
printf("%d ", i);
++count;
primes[i] = false; // 标记已找到素数,避免重复检查
}
}
printf("\n在 (2, %d) 之间共有 %d 个素数。\n", n, count);
return 0;
}
```
当你运行此程序时,它会提示用户输入一个正整数,然后输出指定范围内的素数,并显示素数的数量。
阅读全文