用c语言编程:使用筛选法求指定范围内1到n间的素数,输出时每行显示十个数据,n为正整数且n大于0小于等于1000。
时间: 2024-12-24 22:41:08 浏览: 2
C/C++利用筛选法算素数的方法示例
在C语言中,我们可以使用筛选法(也称为埃拉托斯特尼筛法)来找出指定范围内的所有素数。这个算法的基本思想是从2开始,逐步排除掉所有的合数(非素数),直到达到给定的最大值n。以下是一个简单的程序,它按照每行输出十个素数的方式打印:
```c
#include <stdio.h>
// 判断是否为素数的辅助函数
int is_prime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 主函数:筛选并打印素数
void print_primes(int n, int limit) {
int count = 0;
for (int i = 2; i <= n; i++) { // 遍历从2到n
if (is_prime(i)) { // 如果i是素数
printf("%d ", i); // 打印素数
count++; // 增加计数器
// 每输出十个素数换行
if (count == 10 || i == n) {
printf("\n");
count = 0;
}
}
}
}
int main() {
int n;
printf("Enter a positive integer (1 to 1000): ");
scanf("%d", &n);
// 确保输入在范围内
if (n < 1 || n > 1000) {
printf("Invalid input! Please enter a number between 1 and 1000.\n");
return 1;
}
print_primes(n, n); // 输出n范围内的素数
return 0;
}
```
在这个程序中,`is_prime`函数用于判断一个数是否为素数,`print_primes`函数则负责筛选并打印素数,根据每行十个的原则控制换行。
运行此程序时,请确保输入的n符合要求(1到1000)。如果输入无效,程序会提示错误信息。
阅读全文