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


import extensions;
 
classifyNumbers(int bound, ref int abundant, ref int deficient, ref int perfect)
{
    int a := 0;
    int d := 0;
    int p := 0;
    int[] sum := new int[](bound + 1);
 
    for(int divisor := 1, divisor <= bound / 2, divisor += 1)
    {
        for(int i := divisor + divisor, i <= bound, i += divisor)
        {
            sum[i] := sum[i] + divisor
        }
    };
 
    for(int i := 1, i <= bound, i += 1)
    {
        int t := sum[i];
 
        if (sum[i]<i)
        {
            d += 1
        }
        else
        {
            if (sum[i]>i)
            {
                a += 1
            }
            else
            {
                p += 1
            }
        }
    };
 
    abundant := a;
    deficient := d;
    perfect := p
}
 
public program()
{
    int abundant := 0;
    int deficient := 0;
    int perfect := 0;
    classifyNumbers(20000, ref abundant, ref deficient, ref perfect);
    console.printLine("Abundant: ",abundant,", Deficient: ",deficient,", Perfect: ",perfect)
}