To simplify a fraction, the two numbers must be divided by their GCD. The following script calculates the GCD using the Euclidean Algorithm.

Script to Simplify Fractions

define simplify fraction (numerator) (denominator)
GCD (numerator) (denominator) // calculates GCD of numbers
set [numerator v] to ((numerator) / (GCD)) // divides numerator by GCD
set [denominator v] to ((denominator) / (GCD)) // divides denominator by GCD

define GCD (a) (b) // euclidean algorithm for GCD
if <(b) = (0)> then // if b = 0
set [GCD v] to (a) // stop and return value
else
GCD (b) ((a) mod (b)) // return equal GCD with smaller numbers
end

Example Use Cases

when gf clicked
simplify fraction (36) (48) :: custom
say (join (numerator) (join [/] (denominator))) // 3/4
when gf clicked
simplify fraction (2) (10) :: custom
say (join (numerator) (join [/] (denominator))) // 1/5

Simplify Fraction algorithm

The simplify fraction () () :: custom block simplifies a fraction by calculating the GCDs with GCD () () :: custom and divides the numerator and denominator with the resulting GCD.

GCD algorithm

The GCD uses the Euclidean algorithm. The key insight is that (b :: custom) and ((a::custom) mod (b::custom)) has the same GCD as (a :: custom) and (b :: custom). The numbers produced by (b :: custom) and ((a::custom) mod (b::custom)) get smaller and smaller each time the operation is applied. Eventually (b::custom) will be equal to 0 and the process will stop.