How to check if a number is abundant number in C

1 Answer

0 votes
#include <stdio.h>
#include <math.h>

unsigned SumNumberProperDivisors(const unsigned num) {
    unsigned sum = 0;

    for (unsigned i = 1, j; i <= sqrt(num); i++) {
        if (num % i == 0) {
            sum += i + (i == (j = num / i) ? 0 : j);
        }
    }
    return sum - num;
}

int main()
{
    unsigned int num = 24;
    unsigned int sum = SumNumberProperDivisors(num);
    printf("num = %d sum = %d abundant = %s\n", num, sum, sum > num ? "true" : "false");

    num = 21;
    sum = SumNumberProperDivisors(num);
    printf("num = %d sum = %d abundant = %s\n", num, sum, sum > num ? "true" : "false");

    return 0;
}




/*
run:

num = 24 sum = 36 abundant = true
num = 21 sum = 11 abundant = false

*/

 



answered Oct 31, 2022 by avibootz
edited Nov 1, 2022 by avibootz

Related questions

1 answer 89 views
1 answer 109 views
1 answer 100 views
1 answer 93 views
1 answer 110 views
1 answer 102 views
1 answer 99 views
...