c - 求给定整数的因数之和并将其除以给定整数

标签 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;
}
  • 这是我在在线编译器上得到的信息

  • 这是我编译时得到的结果

最佳答案

您正在循环内执行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

关于c - 求给定整数的因数之和并将其除以给定整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690958/

相关文章:

C代码计算一个单词中有多少个字母

java - 同步方法中的等待与不等待 (java)

php共享内存读取全0

c - 返回指向 C 中 int 指针的指针的函数

python - 哪个更有效率? for 循环中的嵌套 if 或单独的 if 与单独的 for 循环?

javascript - NodeJS/JavaScript if 语句不起作用

r - cumsum NAs 和其他条件 R

c - 取数字并将其存储在C中的 vector 中

c - 两个功能同时发生

python - 如何从Python循环外部结束循环