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.