c语言:输入若干个正整数,以-1表示结束。输出这些整数中约数(包括1和自身)最多的整数及其约数个数,两者之间用一个空格隔开。数量相同,输出后输入的整数。要求子函数getCount实现计算一个正整数的约数个数。
时间: 2024-02-24 20:58:53 浏览: 57
求两个正整数的最大公约数。-c语言程序设计课件
以下是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 num, maxNum = -1, maxCount = 0;
do {
printf("请输入一个正整数(以-1结束):");
scanf("%d", &num);
if (num == -1) {
break;
}
int count = getCount(num);
if (count > maxCount) {
maxCount = count;
maxNum = num;
}
} while (num != -1);
printf("约数最多的整数为:%d,约数个数为:%d\n", maxNum, maxCount);
return 0;
}
```
解析:
1. 首先定义一个函数 `getCount`,参数为 `n`,表示要计算约数的正整数;
2. 在函数中,使用循环遍历 1 到 `n` 之间的数字,如果能整除 `n`,则计数器 `count` 加 1;
3. 最后返回计数器 `count`;
4. 在 `main` 函数中,使用循环读入输入的正整数,使用 `getCount` 函数计算其约数个数,如果约数个数大于之前的最大值,则更新最大值和最大约数个数;
5. 当输入 -1 时,跳出循环,输出约数最多的整数及其约数个数。
注意:本题中要求包括 1 和自身,所以循环遍历的范围是 1 到 `n`。
阅读全文