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


/* Fill a given array such that for each N, 
 * P[n] is the sum of proper divisors of N */
proc nonrec propdivs([*] word p) void:
    word i, j, max;
    max := dim(p,1)-1;
    for i from 0 upto max do p[i] := 0 od;
    for i from 1 upto max/2 do
        for j from i*2 by i upto max do
            p[j] := p[j] + i
        od
    od
corp
 
proc nonrec main() void:
    word MAX = 20000;
    word def, per, ab, i;
 
    /* Find all required proper divisor sums */
    [MAX+1] word p;
    propdivs(p);
 
    def := 0;
    per := 0;
    ab := 0;
 
    /* Check each number */ 
    for i from 1 upto MAX do
        if   p[i]<i then def := def + 1
        elif p[i]=i then per := per + 1
        elif p[i]>i then ab := ab + 1
        fi
    od;
 
    writeln("Deficient: ", def:5);
    writeln("Perfect:   ", per:5);
    writeln("Abundant:  ", ab:5)
corp