How to print all the deficient numbers from 1 to 100 in C++

1 Answer

0 votes
//  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) {
			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)) {
		    std::cout << i << " ";
		}
	}
}




/*
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 

*/

 



answered Nov 17, 2022 by avibootz

Related questions

1 answer 92 views
1 answer 160 views
1 answer 208 views
1 answer 136 views
1 answer 162 views
1 answer 117 views
...