[back]

Sums of Squares

Implement the function

val min_sos : int -> int

so that min_sos n is the minimum number of squares required to sum up to n.

Examples

let _ = assert (min_sos 3 = 3)    (* 3 = 1^2 + 1^2 + 1^2 *)
let _ = assert (min_sos 4 = 1)    (* 4 = 2^2 *)
let _ = assert (min_sos 5 = 2)    (* 5 = 2^2 + 1^2 *)