These define three classifications of positive integers based on their   proper divisors.

Let   P(n)   be the sum of the proper divisors of   n   where the proper divisors are all positive divisors of   n   other than   n   itself.

   if    P(n) <  n    then  n  is classed as  deficient  (OEIS A005100).
   if    P(n) == n    then  n  is classed as  perfect    (OEIS A000396).
   if    P(n) >  n    then  n  is classed as  abundant   (OEIS A005101).



Example

6   has proper divisors of   1,   2,   and   3.

1 + 2 + 3 = 6,   so   6   is classed as a perfect number.



Task

Calculate how many of the integers   1   to   20,000   (inclusive) are in each of the three classes.

Show the results here.



Related tasks

   Aliquot sequence classifications.   (The whole series from which this task is a subset.)
   Proper divisors
   Amicable pairs


 
;;;	The list (1 .. n-1) of integers is generated
;;;	then each non-divisor of n is replaced by 0
;;;	finally all these numbers are summed.
;;;	fn defines an anonymous function inline.
(define (sum-divisors n)
	(apply + (map (fn (x) (if (> (% n x) 0) 0 x)) (sequence 1 (- n 1)))))
;
;;;	Returns the symbols -, p or + for deficient, perfect or abundant numbers respectively.
(define (number-type n)
	(let (sum (sum-divisors n))
		(if
			(< sum n)	'-
			(= sum n)	'p
			true		'+)))
;
;;;	Tallies the types from 2 to n.
(define (count-types n)
	(count '(- p +) (map number-type (sequence 2 n))))
;
;;;	Running:
(println (count-types 20000))
 