输入若干个正整数,以-1表示结束。输出这些整数中约数(包括1和自身)最多的整数及其约数个数,两者之间用一个空格隔开。数量相同,输出后输入的整数。要求子函数getCount实现计算一个正整数的约数个数。用c语言编写程序
时间: 2024-03-19 12:45:33 浏览: 15
好的,这是一个关于约数的问题,我会尽力回答你。以下是C语言的程序:
```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;
}
int main()
{
int num, maxNum = -1, maxCount = -1;
printf("请输入若干个正整数,以-1表示结束:\n");
while (1) {
scanf("%d", &num);
if (num == -1) {
break;
}
int count = getCount(num);
if (count > maxCount || (count == maxCount && num > maxNum)) {
maxNum = num;
maxCount = count;
}
}
printf("约数最多的整数是 %d,它有 %d 个约数。\n", maxNum, maxCount);
return 0;
}
```
程序的主要思路是用一个循环读入若干个正整数,每输入一个正整数就调用函数 `getCount` 计算其约数个数,然后比较得出约数最多的整数和其约数个数。函数 `getCount` 的实现比较简单,就是遍历从 1 到该正整数的所有整数,看是否能整除该正整数。如果能整除,则约数个数加 1。最后,输出约数最多的整数和其约数个数即可。