19 lines
534 B
FSharp
19 lines
534 B
FSharp
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 |