(编写C语言程序)从键盘输入一个大于100小于1000的数N,输出从100到N之间所有的素数,这些素数要求10个一行进行排列,并统计这些素数的个数。
时间: 2024-12-22 17:33:27 浏览: 4
在C语言中,我们可以使用Sieve of Eratosthenes算法找到给定范围内的所有素数。以下是实现这一功能的程序,包括分页显示和计数:
```c
#include <stdio.h>
#include <stdbool.h>
#define LIMIT 1000
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;
}
void print_primes(int start, int end, int count) {
int current = start;
while (current <= end && count >= 10) {
bool is_current_prime = is_prime(current);
if (is_current_prime) {
printf("%d ", current);
count--;
} else {
printf("-- ");
}
current++;
}
printf("\n");
}
int main() {
int N, prime_count = 0;
printf("请输入一个大于100小于1000的数(N): ");
scanf("%d", &N);
if (N < 100 || N >= 1000) {
printf("输入的数值超出范围,只显示100到999之间的素数。\n");
} else {
printf("100到%d之间的素数:\n", N);
for (int i = 100; i <= N; ++i) {
if (is_prime(i)) {
printf("%d", i);
prime_count++;
if ((prime_count - 1) % 10 == 0) { // 每10个数换行
print_primes(i, i + 9, prime_count);
}
}
}
print_primes(i, N, prime_count); // 输出剩余的素数
}
printf("100到%d之间的素数总数是: %d\n", N, prime_count);
return 0;
}
```
这段程序首先检查用户输入的有效性,然后用Sieve of Eratosthenes筛选出100到N范围内的素数。每打印10个素数换行,直到打印完整个范围内所有的素数并计算总数。
阅读全文