0
点赞
收藏
分享

微信扫一扫

输出约数最多的数

【问题描述】输入若干个正整数,以-1表示结束。输出这些整数中约数(包括1和自身)最多的整数及其约数个数,两者之间用一个空格隔开。数量相同,输出后输入的整数。要求子函数getCount实现计算一个正整数的约数个数。

【输入形式】 【输出形式】 【样例输入】17 5 -1

【样例输出】5 2

【样例说明】输出中5和2之间一个空格,2之后一个换行

#include <stdio.h>

#include <stdlib.h>

int  getCount(int  m);

int main()

{

    int  max, x, n,r;

    scanf("%d", &n);

         x = n;

         r = getCount(n);

         max = r;

    do {

        scanf("%d", &n);

        r = getCount(n);

        if (max <= r) {

            max = r;

            x = n ;

        }

        else {

            max = max;

        }

    } while (n != -1);

    printf("%d %d", x,max);  /*不要把x错写成n*/

    return 0;

}

 

int  getCount(int  m)

{

    int count, i;

    count = 0;

    for (i = 1; i <= m; i++) {

        if (m % i == 0) {

            count++;

        }

    }

    return count;

}

 

问题:如何输出约数最多的那个数。

解决:参考求最大值最小值的方法。先把n的值赋给未知数x,同时

      令max为getCount(n) (即n的约数的个数),再循环比较。

      如果有一个数的约数更多,则将此数赋给x,最后输出x。

举报

相关推荐

0 条评论