Найти сумму факторов заданного целого числа и разделить ее на заданное целое число - PullRequest
0 голосов
/ 07 октября 2018

Я новичок в языке 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 голосов
/ 07 октября 2018

Вы делаете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...