C语言:输入若干个正整数,以-1表示结束。输出这些整数中约数(包括1和自身)最多的整数极其约数个数,两者之间用一个空格隔开。数量相同,输出后输入的整数,要求子函数getCount实现计算一个正整数的约数个数。
时间: 2024-12-08 09:23:11 浏览: 27
c代码-输入一个正整数n,显示该正整数的约数,每显示一个换一行,并统计约数的个数。
在C语言中,你可以通过编写一个主函数和一个辅助函数`getCount`来解决这个问题。首先,我们需要创建一个循环结构,用于读取用户输入的正整数,直到遇到-1为止。然后,在主函数中,我们遍历输入的数组,记录下当前找到的最大约数及其对应的数目,并在遇到同样多约数的数时更新结果。
下面是代码的一个示例:
```c
#include <stdio.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 arr[], int n) {
int max_count = 0, max_num = 0;
for (int i = 0; i < n; i++) {
if (arr[i] != -1) {
int div_count = getCount(arr[i]);
if (div_count > max_count) {
max_count = div_count;
max_num = arr[i];
} else if (div_count == max_count && arr[i] > max_num) {
max_num = arr[i];
}
}
}
printf("%d %d", max_num, max_count);
}
int main() {
int input;
int numbers[100]; // 假设最多输入100个数字
int index = 0;
while (scanf("%d", &input), input != -1) {
numbers[index++] = input;
}
findMaxDivisor(numbers, index);
return 0;
}
```
在这个程序中,`getCount`函数计算输入数字的约数,而`findMaxDivisor`函数负责找出约数最多的那个数并打印出来。在`main`函数中,用户输入的每个非-1的整数都会被添加到数组中,最后调用`findMaxDivisor`处理整个数组。
阅读全文