// 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 <iostream>
#include <cmath>
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)
std::cout << i << " ";
else
std::cout << i << " " << num / i << " ";
sum += i + (i == (j = num / i) ? 0 : j);
}
}
std::cout << "sum divisors = " << sum << " number * 2 = " << num * 2 << "\n";
return sum;
}
bool isDeficient(const unsigned num) {
return SumNumberProperDivisors(num) < (2 * num);
}
int main()
{
std::cout << "\n" << isDeficient(21) << "\n";
std::cout << "\n" << isDeficient(20) << "\n";
}
/*
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
*/