module _21 let amicalbleNumbers len = // get divisor sums let dSums = common.divisors len |> Array.map (List.fold (+) 0) // find amicable ones [2..len] |> List.filter (fun i -> dSums.[i] > 0 && dSums.[i] <= len && not (i = dSums.[i]) && i < dSums.[i] && i = dSums.[dSums.[i]] ) |> List.map (fun i -> (i, dSums.[i])) let amicalbleSum = let a = amicalbleNumbers 10000 let all = List.append (a |> List.map fst) (a |> List.map snd) all |> List.sum