用c语言写出输入若干个正整数,以-1表示结束,输出这些整数中约数(包括1和自身)最多的的整数及其约数个数,两者之间用一个空格隔开。数量相同,输出后输入的整数。要求子函数getCount 实现计算一个正整数的约数个数
时间: 2024-11-28 07:27:43 浏览: 8
在 C 语言中,你可以使用循环结构和辅助函数来实现这个功能。首先,我们需要一个 `getCount` 子函数来计算一个整数的约数个数。然后,在主程序里,我们读取用户输入,直到遇到 -1 结束。以下是相应的代码:
```c
#include <stdio.h>
#include <stdbool.h>
// 计算一个整数的约数个数
int getCount(int num) {
int count = 0;
for (int i = 1; i <= num; ++i) {
if (num % i == 0) {
count++;
}
}
return count;
}
// 主程序
void findMaxDivisor() {
int input;
printf("请输入正整数(-1结束): ");
while (scanf("%d", &input) != EOF && input != -1) {
int max_count = getCount(input);
if (max_count > max_divisor_count || (max_count == max_divisor_count && input < max_divisor)) {
max_divisor = input;
max_divisor_count = max_count;
}
// 输出当前最大约数及其个数
printf("%d %d ", max_divisor, max_divisor_count);
// 清理输入缓冲区防止后续干扰
scanf("%*[^-1]");
}
printf("\n");
}
int main() {
int max_divisor = 0;
int max_divisor_count = 0;
findMaxDivisor();
return 0;
}
```
当你运行这个程序,它会提示你输入正整数,每输入一个数,它就会显示到目前为止找到的最大约数及其约数个数。当输入 -1 时,程序停止,并输出最后一个输入的整数。
阅读全文