c语言 输入若干个正整数,以-1表示结束。输出这些整数中约数(包括1和自身)最多的整数及其约数个数,两者之间用一个空格隔开。数量相同,输出后输入的整数。要求子函数getCount实现计算一个正整数的约数个数。 【输入形式】 【输出形式】 【样例输入】17 5 -1 【样例输出】5 2 【样例说明】输出中5和2之间一个空格,2之后一个换行 【评分标准】
时间: 2023-12-02 17:02:54 浏览: 55
下面是这个问题的C语言代码实现:
```c
#include <stdio.h>
// 计算一个正整数的约数个数
int getCount(int n) {
int count = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
return count;
}
int main() {
int n, maxCount = 0, maxNum = -1;
while (1) {
scanf("%d", &n);
if (n == -1) {
break;
}
int count = getCount(n);
if (count > maxCount) {
maxCount = count;
maxNum = n;
} else if (count == maxCount) {
maxNum = n;
}
}
printf("%d %d\n", maxNum, maxCount);
return 0;
}
```
程序思路:
1. 定义一个函数 `getCount`,用于计算一个正整数的约数个数。
2. 主程序中使用一个 `while` 循环,每次读入一个数,若该数为 -1 则退出循环,否则调用 `getCount` 函数计算该数的约数个数。
3. 判断该数的约数个数是否大于当前最大约数个数,若大于则更新最大约数个数和最大约数个数对应的数值,否则若约数个数相同则仅更新最大约数个数对应的数值。
4. 循环结束后输出最大约数个数和对应的数值即可。
阅读全文