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

 



answered Nov 17, 2022 by avibootz

Related questions

1 answer 84 views
1 answer 122 views
1 answer 147 views
1 answer 101 views
1 answer 147 views
1 answer 187 views
1 answer 107 views
...