How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the ALGOL 68 programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the ALGOL 68 programming language

Table of Contents

Problem Statement

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.

6   has proper divisors of   1,   2,   and   3. 1 + 2 + 3 = 6,   so   6   is classed as a perfect number.

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

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the ALGOL 68 programming language

Source code in the algol programming language

BEGIN # classify the numbers 1 : 20 000 as abudant, deficient or perfect #
    INT abundant count    := 0;
    INT deficient count   := 0;
    INT perfect count     := 0;
    INT max number         = 20 000;
    # construct a table of the proper divisor sums                 #
    [ 1 : max number ]INT pds;
    pds[ 1 ] := 0;
    FOR i FROM 2 TO UPB pds DO pds[ i ] := 1 OD;
    FOR i FROM 2 TO UPB pds DO
        FOR j FROM i + i BY i TO UPB pds DO pds[ j ] +:= i OD
    OD;
    # classify the numbers                                         #
    FOR n TO max number DO
        INT pd sum = pds[ n ];
        IF     pd sum < n THEN
            deficient count +:= 1
        ELIF   pd sum = n THEN
            perfect count   +:= 1
        ELSE # pd sum > n #
            abundant count  +:= 1
        FI
    OD;
    print( ( "abundant  ", whole(  abundant count, 0 ), newline ) );
    print( ( "deficient ", whole( deficient count, 0 ), newline ) );
    print( ( "perfect   ", whole(   perfect count, 0 ), newline ) )
END

  

You may also check:How to resolve the algorithm Trabb Pardo–Knuth algorithm step by step in the OCaml programming language
You may also check:How to resolve the algorithm Giuga numbers step by step in the ALGOL 68 programming language
You may also check:How to resolve the algorithm Fibonacci word step by step in the Ruby programming language
You may also check:How to resolve the algorithm Sorting algorithms/Merge sort step by step in the ZED programming language
You may also check:How to resolve the algorithm Hailstone sequence step by step in the CLIPS programming language