Sum multiples of 3 and 5: Difference between revisions

Line 2,895:
open Printf;;
 
let sum_mults nmul3or5 =
let rec countemwheel n= sum3 =:: 2 :: 1 :: 3 :: 1 :: 2 :: 3 :: wheel in
Seq.scan (+) 0 (List.to_seq wheel);;
match n with
| 0 -> sum
| _ -> countem (n - 1) (sum + if (n mod 5) = 0 || (n mod 3) = 0 then n else 0)
in
countem n 0;;
 
let sum3or5 upto =
printf "The sum of the multiples of 3 or 5 below 1000 is %d\n" (sum_mults 999);;
mul3or5 |> Seq.take_while (fun n -> n < upto) |> Seq.fold_left (+) 0;;
 
printf "The sum of the multiples of 3 or 5 below 1000 is %d\n" (sum_multssum3or5 9991000);;
</lang>
{{Out}}
357

edits