How to resolve the algorithm Abundant, deficient and perfect number classifications step by step in the CLU 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 CLU 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 CLU programming language

Source code in the clu programming language

% Generate proper divisors from 1 to max
proper_divisors = proc (max: int) returns (array[int])
    divs: array[int] := array[int]$fill(1, max, 0)
    for i: int in int$from_to(1, max/2) do
        for j: int in int$from_to_by(i*2, max, i) do
            divs[j] := divs[j] + i
        end
    end
    return(divs)
end proper_divisors

% Classify all the numbers for which we have divisors
classify = proc (divs: array[int]) returns (int, int, int)
    def, per, ab: int
    def, per, ab := 0, 0, 0
    for i: int in array[int]$indexes(divs) do
        if     divs[i]
        elseif divs[i]=i then per := per + 1
        elseif divs[i]>i then ab := ab + 1
        end
    end 
    return(def, per, ab)
end classify 

% Find amount of deficient, perfect, and abundant numbers up to 20000
start_up = proc ()
    max = 20000
    
    po: stream := stream$primary_output()
    
    def, per, ab: int := classify(proper_divisors(max))
    stream$putl(po, "Deficient: " || int$unparse(def))
    stream$putl(po, "Perfect:   " || int$unparse(per))
    stream$putl(po, "Abundant:  " || int$unparse(ab))
end start_up

  

You may also check:How to resolve the algorithm Matrix-exponentiation operator step by step in the Fermat programming language
You may also check:How to resolve the algorithm Reverse words in a string step by step in the Ring programming language
You may also check:How to resolve the algorithm Sum and product of an array step by step in the E programming language
You may also check:How to resolve the algorithm Zero to the zero power step by step in the D programming language
You may also check:How to resolve the algorithm Ethiopian multiplication step by step in the Euphoria programming language