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


begin % count abundant, perfect and deficient numbers up to 20 000        % 
    integer MAX_NUMBER;
    MAX_NUMBER := 20000;
    begin
        integer array pds ( 1 :: MAX_NUMBER );
        integer aCount, dCount, pCount, dSum;
        % construct a table of proper divisor sums                        %
        pds( 1 ) := 0;
        for i := 2 until MAX_NUMBER do pds( i ) := 1;
        for i := 2 until MAX_NUMBER do begin
            for j := i + i step i until MAX_NUMBER do pds( j ) := pds( j ) + i
        end for_i ;
        aCount := dCount := pCOunt := 0;
        for i := 1 until 20000 do begin
            dSum := pds( i );
            if      dSum > i then aCount := aCount + 1
            else if dSum < i then dCount := dCOunt + 1
            else %  dSum = i    % pCount := pCount + 1
        end for_i ;
        write( "Abundant  numbers up to 20 000: ", aCount );
        write( "Perfect   numbers up to 20 000: ", pCount );
        write( "Deficient numbers up to 20 000: ", dCount )
    end
end.