Sum multiples of 3 and 5: Difference between revisions

OCaml: efficient variant
(→‎{{header|Vlang}}: Rename "Vlang" in "V (Vlang)")
(OCaml: efficient variant)
Line 2,916:
 
=={{header|OCaml}}==
<syntaxhighlight lang="ocaml">let sum_multssum_m3m5 n =
let termial x = (x * letx sum+ =x) reflsr 01 in
3 * (termial (n / 3) for- i5 =* 3 totermial (n -/ 115)) do+ 5 * termial (n / 5)
if (i mod 3) = 0 || (i mod 5) = 0 then
sum := !sum + i;
done;
!sum;;
 
let () =
print_endline (string_of_int (sum_mults 1000));;
let pow10 x = truncate (10. ** (float x)) in
</syntaxhighlight>
for i = 1 to 9 do
let u = pred (pow10 i) in
Printf.printf "Summing multiples of 3 or 5 in 1..%u: %u\n" u (sum_m3m5 u)
done</syntaxhighlight>
{{out}}
<pre>233168</pre>
Summing multiples of 3 or 5 in 1..9: 23
=== Functional programming version (more idiomatic) ===
Summing multiples of 3 or 5 in 1..99: 2318
Summing multiples of 3 or 5 in 1..999: 233168
Summing multiples of 3 or 5 in 1..9999: 23331668
Summing multiples of 3 or 5 in 1..99999: 2333316668
Summing multiples of 3 or 5 in 1..999999: 233333166668
Summing multiples of 3 or 5 in 1..9999999: 23333331666668
Summing multiples of 3 or 5 in 1..99999999: 2333333316666668
Summing multiples of 3 or 5 in 1..999999999: 233333333166666668
</pre>
=== With wheel increments (slower) ===
<syntaxhighlight lang="ocaml">
open Printf;;
559

edits