// 21 divisors = (1, 3, 7) : 1 + 3 + 7 = 11 : 11 < 21 = Deficient
// 21 divisors = (1, 3, 7, 21) : 1 + 3 + 7 + 21 = 32 : 32 < 21 * 2 = Deficient
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
unsigned SumNumberProperDivisors(const unsigned num) {
unsigned sum = 0;
for (unsigned i = 1, j; i <= sqrt(num); i++) {
if (num % i == 0) {
if (num / i == i)
printf("%u, ", i);
else
printf("%u, %u, ", i, num / i);
sum += i + (i == (j = num / i) ? 0 : j);
}
}
printf("sum divisors = %u number * 2 = %u\n", sum, num * 2);
return sum;
}
bool isDeficient(const unsigned num) {
return SumNumberProperDivisors(num) < (2 * num);
}
int main()
{
printf("%u\n", isDeficient(21));
printf("%u\n", isDeficient(20));
return 0;
}
/*
run:
1, 21, 3, 7, sum divisors = 32 number * 2 = 42
1
1, 20, 2, 10, 4, 5, sum divisors = 42 number * 2 = 40
0
*/