Sum multiples of 3 and 5: Difference between revisions

Added F# version
(Added F# version)
Line 284:
{{out}}
<pre>233168</pre>
 
 
=={{header|F_Sharp|F#}}==
{{trans|Perl 6}}
<lang fsharp>let sum35 (n: int) =
Seq.init n (fun i -> i)
|> Seq.fold (fun sum i -> if i % 3 = 0 || i % 5 = 0 then sum + i else sum) 0
 
printfn "%d" (sum35 1000)
printfn "----------"
 
let sumUpTo (n : bigint) = n * (n + 1I) / 2I
 
let sumMultsBelow k n = k * (sumUpTo ((n-1I)/k))
 
let sum35fast n = (sumMultsBelow 3I n) + (sumMultsBelow 5I n) - (sumMultsBelow 15I n)
 
[for i = 0 to 30 do yield i]
|> List.iter (fun i -> printfn "%A" (sum35fast (bigint.Pow(10I, i))))</lang>
{{out}}
<pre style="height:5em">233168
----------
0
23
2318
233168
23331668
2333316668
233333166668
23333331666668
2333333316666668
233333333166666668
23333333331666666668
2333333333316666666668
233333333333166666666668
23333333333331666666666668
2333333333333316666666666668
233333333333333166666666666668
23333333333333331666666666666668
2333333333333333316666666666666668
233333333333333333166666666666666668
23333333333333333331666666666666666668
2333333333333333333316666666666666666668
233333333333333333333166666666666666666668
23333333333333333333331666666666666666666668
2333333333333333333333316666666666666666666668
233333333333333333333333166666666666666666666668
23333333333333333333333331666666666666666666666668
2333333333333333333333333316666666666666666666666668
233333333333333333333333333166666666666666666666666668
23333333333333333333333333331666666666666666666666666668
2333333333333333333333333333316666666666666666666666666668
233333333333333333333333333333166666666666666666666666666668</pre>
 
=={{header|FBSL}}==
Anonymous user