编写一个C一眼程序输入2个自然数A,B: 1.输出[A,B]范围内的素数个数。 2.按从小到大的顺序输出这两个数之间的所有公因数。 输入样例 4 8 输出样例 2 1 2 4 说明 请使用for/while循环、for循环实现
时间: 2024-10-21 20:09:57 浏览: 32
在C语言中编写这样的程序需要分成两个部分,首先计算并输出[4, 8]范围内素数的数量,然后找出这两个数之间的所有公因数。以下是相应的代码:
```c
#include <stdio.h>
// 判断是否为素数的辅助函数
int isPrime(int num) {
if (num <= 1) return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return 0;
}
return 1;
}
// 计算并输出[low, high]内素数的数量
void countPrimesInRange(int low, int high) {
int primeCount = 0;
for (int i = low; i <= high; i++) {
if (isPrime(i)) primeCount++;
}
printf("%d\n", primeCount);
}
// 找出并输出两个数之间的公因数
void findCommonFactors(int a, int b) {
int min = (a < b) ? a : b;
int max = (a > b) ? a : b;
for (int i = 1; i <= min; i++) {
if (a % i == 0 && b % i == 0) {
printf("%d ", i); // 如果i同时是a和b的因数,则输出它
}
}
printf("\n");
}
int main() {
int A, B;
scanf("%d %d", &A, &B);
printf("素数个数: ");
countPrimesInRange(A, B);
printf("公因数(从小到大): ");
findCommonFactors(A, B);
return 0;
}
```
在这个程序中,我们首先定义了一个`isPrime`函数用于判断一个整数是否是素数。然后在`countPrimesInRange`函数中,遍历给定范围内的每个数字,统计素数数量。最后,`findCommonFactors`函数找出并打印两个数A和B的所有公共因数。
注意:这个程序假设输入的数值都是正整数,且不会检查输入的有效性。实际应用中可能需要添加错误处理。
阅读全文