The easiest way to find all the multiples of 3 or 5 below 1000 with Ocaml is to use a recursive function with a switch.

The first Project Euler problem - Multiples of 3 and 5 - is stated as follows. Find the sum of all the multiples of 3 or 5 below 1000.

```
(* Recursive switch *)
let multiples target =
let rec next x sum =
match (x mod 3 = 0 || x mod 5 = 0, x > 0) with
| (false, true) -> next (x - 1) sum
| (true, true) -> next (x - 1) (sum + x)
| _ -> sum in
next (target - 1) 0
```

```
(* Recursive switch + one function argument *)
let multiples target =
let rec next sum =
function
| 0 -> sum
| n when n mod 3 = 0 || n mod 5 = 0 -> next (sum + n) (n - 1)
| n -> next sum (n - 1) in
next 0 target
```

- [animation] Unknown Pleasures
- [tech-test] What is a binary tree and how to invert it using Kotlin
- [project-euler] Find Highly Divisible Triangular Numbers with Kotlin
- [project-euler] Find the Largest Product in a Grid with Rust
- [project-euler] Summation of the First Two Million Primes with Rust
- [project-euler] Finding the largest product in a series with Rust
- [project-euler] Finding the 10001st prime with Rust
- [js] The complete list of rational numbers with Stern-Brocot and Javascript
- [project-euler] Project Euler number six solved with Rust
- [project-euler] Smallest positive number that is evenly divisible by all of the numbers from 1 to 20 with Rust
- [project-euler] Finding the largest palindrome product with Rust
- [project-euler] Get the largest prime factor with Reason
- [project-euler] Find the sum of all even Fibonacci numbers below four million with OCaml
- [project-euler] Finding the sum of all multiples of 3 or 5 below 1000 with OCaml
- [project-euler] Special Pythagorean Triplet solved with Reason
- [personal] New Year's Resolution 2018