// 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) {
sum += i + (i == (j = num / i) ? 0 : j);
}
}
return sum;
}
bool isDeficient(const unsigned num) {
return SumNumberProperDivisors(num) < (2 * num);
}
int main()
{
for (int i = 1; i <= 100; i++) {
if (isDeficient(i)) {
printf("%3d", i);
}
}
return 0;
}
/*
run:
1 2 3 4 5 7 8 9 10 11 13 14 15 16 17 19 21 22 23 25 26 27 29
31 32 33 34 35 37 38 39 41 43 44 45 46 47 49 50 51 52 53 55 57 58 59
61 62 63 64 65 67 68 69 71 73 74 75 76 77 79 81 82 83 85 86 87 89 91
92 93 94 95 97 98 99
*/