输入两个正整数m和n,输出m和n之间的所有素数,要求每行输出6个,每个占8位宽度,右对齐
时间: 2024-11-27 15:11:35 浏览: 109
要编写一个程序来输出两个正整数 `m` 和 `n` 之间的所有素数,我们可以使用 Sieve of Eratosthenes 算法。这个算法可以帮助我们找到一定范围内的所有素数。首先,我们需要判断一个数是否为素数,然后遍历给定区间生成并打印结果。
以下是一个简单的 C 语言程序示例,满足题目要求:
```c
#include <stdio.h>
#include <math.h>
// 判断是否为素数
int is_prime(int num) {
if (num <= 1) return 0;
if (num == 2 || num == 3) return 1;
if (num % 2 == 0 || num % 3 == 0) return 0;
int i = 5;
while (i * i <= num) {
if (num % i == 0 || num % (i + 2) == 0)
return 0;
i += 6; // 跳过 6k±1 的非素数
}
return 1;
}
// 输出 m 到 n 间的素数
void print_primes_between(int m, int n) {
for (int i = m; i <= n; ++i) {
if (is_prime(i)) {
printf("%*d", 8, i); // 使用 printf 的格式控制输出宽度和对齐方式
if ((i % 6) != 5) { // 每输出 6 个数换行
puts("");
} else {
printf(" ");
}
}
}
puts(""); // 结束时加一个空行
}
int main() {
int m, n;
printf("Enter the range (m and n separated by a space): ");
scanf("%d %d", &m, &n);
if (m >= n) {
printf("Error: m should be less than n.\n");
return 1;
}
print_primes_between(m, n);
return 0;
}
```
在这个程序中,`is_prime()` 函数用于检查一个数是否为素数,而 `print_primes_between()` 函数则根据题目要求输出结果。用户被提示输入范围 `m` 和 `n`,然后程序会打印它们之间所有的素数,每行显示 6 个,宽度为 8 位,右侧对齐。
阅读全文