How to resolve the algorithm Arithmetic/Rational step by step in the F# programming language

Published on 12 May 2024 09:40 PM

How to resolve the algorithm Arithmetic/Rational step by step in the F# 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 F# programming language

Source code in the fsharp programming language

type frac = Microsoft.FSharp.Math.BigRational

let perf n = 1N = List.fold (+) 0N (List.map (fun i -> if n % i = 0 then 1N/frac.FromInt(i) else 0N) [2..n])

for i in 1..(1<<<19) do if (perf i) then printfn "%i is perfect" i


  

You may also check:How to resolve the algorithm Table creation/Postal addresses step by step in the PHP+SQLite programming language
You may also check:How to resolve the algorithm N-queens problem step by step in the Modula-2 programming language
You may also check:How to resolve the algorithm Primes: n*2^m+1 step by step in the Phix programming language
You may also check:How to resolve the algorithm Hailstone sequence step by step in the Visual Basic .NET programming language
You may also check:How to resolve the algorithm Character codes step by step in the BASIC256 programming language