How to resolve the algorithm Arithmetic/Rational step by step in the Seed7 programming language
How to resolve the algorithm Arithmetic/Rational step by step in the Seed7 programming language
Table of Contents
Problem Statement
Create a reasonably complete implementation of rational arithmetic in the particular language using the idioms of the language.
Define a new type called frac with binary operator "//" of two integers that returns a structure made up of the numerator and the denominator (as per a rational number). Further define the appropriate rational unary operators abs and '-', with the binary operators for addition '+', subtraction '-', multiplication '×', division '/', integer division '÷', modulo division, the comparison operators (e.g. '<', '≤', '>', & '≥') and equality operators (e.g. '=' & '≠'). Define standard coercion operators for casting int to frac etc. If space allows, define standard increment and decrement operators (e.g. '+:=' & '-:=' etc.). Finally test the operators: Use the new type frac to find all perfect numbers less than 219 by summing the reciprocal of the factors.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Arithmetic/Rational step by step in the Seed7 programming language
Source code in the seed7 programming language
$ include "seed7_05.s7i";
include "rational.s7i";
const func boolean: isPerfect (in integer: candidate) is func
result
var boolean: isPerfect is FALSE;
local
var integer: divisor is 0;
var rational: sum is rational.value;
begin
sum := 1 / candidate;
for divisor range 2 to sqrt(candidate) do
if candidate mod divisor = 0 then
sum +:= 1 / divisor + 1 / (candidate div divisor);
end if;
end for;
isPerfect := sum = rat(1);
end func;
const proc: main is func
local
var integer: candidate is 0;
begin
for candidate range 2 to 2 ** 19 - 1 do
if isPerfect(candidate) then
writeln(candidate <& " is perfect");
end if;
end for;
end func;
You may also check:How to resolve the algorithm Pangram checker step by step in the C++ programming language
You may also check:How to resolve the algorithm Water collected between towers step by step in the Clojure programming language
You may also check:How to resolve the algorithm Conditional structures step by step in the Yabasic programming language
You may also check:How to resolve the algorithm Regular expressions step by step in the Argile programming language
You may also check:How to resolve the algorithm Safe addition step by step in the Tcl programming language