View Category

### Find all Pythagorean triangles with length or height less than or equal to 20

Pythagorean triangles are right angle triangles whose sides comply with the following equation:

a * a + b * b = c * c

where c represents the length of the hypotenuse, and a and b represent the lengths of the other two sides. Find all such triangles where a, b and c are non-zero integers with a and b less than or equal to 20. Sort your results by the size of the hypotenuse. The expected answer is:

a * a + b * b = c * c

where c represents the length of the hypotenuse, and a and b represent the lengths of the other two sides. Find all such triangles where a, b and c are non-zero integers with a and b less than or equal to 20. Sort your results by the size of the hypotenuse. The expected answer is:

`[3, 4, 5]`

`[6, 8, 10]`

`[5, 12, 13]`

`[9, 12, 15]`

`[8, 15, 17]`

`[12, 16, 20]`

`[15, 20, 25]`

fsharp

let getGoodTri (a,b) =

let h = int(System.Math.Sqrt(float(a*a + b*b)))

if a*a + b*b = h*h then Some(a,b,h)

else None

seq{ for i in 1..20 do yield! seq{for j in i..20 do yield i,j} } |> Seq.choose(getGoodTri) |> Seq.sortBy(fun (_,_,c) -> c);;

let h = int(System.Math.Sqrt(float(a*a + b*b)))

if a*a + b*b = h*h then Some(a,b,h)

else None

seq{ for i in 1..20 do yield! seq{for j in i..20 do yield i,j} } |> Seq.choose(getGoodTri) |> Seq.sortBy(fun (_,_,c) -> c);;

### Greatest Common Divisor

Find the largest positive integer that divides two given numbers without a remainder. For example, the GCD of 8 and 12 is 4.

fsharp

let rec gcd x y =

if y = 0 then x

else gcd y (x % y)

if y = 0 then x

else gcd y (x % y)