找出给定整数的因子之和,然后除以给定整数

时间:2018-10-07 17:15:28

标签: c loops if-statement factors

我是C语言的新手,我真的可以为这个问题提供帮助:

整数的丰度定义为数字的完美除数(因子不包括数字本身)除以数字本身。例如,丰度8为(1 + 2 + 4)/ 8 = 7/8。编写一个C函数,该函数使用一个整数作为输入并返回该数字的数量。

据我所知。我可以编译它,但是我一直得到错误的答案。请先帮助并谢谢

#include <stdio.h>
int main()
{
    int number, i, sum, abundancy;
    sum==0;
    abundancy==0;

    printf("Enter an integer:");
    scanf("%d", &number);

    for(i=1; i<=number; i++)
    {
        if (i!=number)
        {
            if (number%i == 0)
            {
                sum+=i;
                    {
                        abundancy=sum/number;
                        printf("The abundancy is %d", abundancy);
                    }
            }
        }
    }
    return 0;
}
  • 这是我在网上编译器上获得的信息

  • 这是我编译时得到的

1 个答案:

答案 0 :(得分:0)

您正在循环中执行abundancy=sum/number;,这将使您得到错误的结果。这是更改后的代码的正确版本:

#include <stdio.h>
int main()
{
    int number, i, sum, abundancy;
    sum=0;                       //USE ASSIGNMENT NOT EQUAL TO OPERATOR
    abundancy=0;                 //USE ASSIGNMENT NOT EQUAL TO OPERATOR

    printf("Enter an integer:");
    scanf("%d", &number);

    for(i=1; i<number; i++)                 //CHANGED
    {
        if (number%i == 0)              //ONLY SINGLE IF NEEDED
        {
            sum+=i;
        }
    }
    abundancy = sum/number;
    printf("Abundancy is: %d/%d\n",sum,number);   //ADDED 
    printf("abundancy is: %d\n",abundancy);

    return 0;
}

即使abundancy仍将包含底值sum/number-在打印时应使用float%f作为格式说明符。

输入:

12

输出:

 abundancy is: 16/12
 abundancy is: 1