我是 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/