### Question

Original post on ProjectEuler.net

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6, 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

### Solution

This problem is essentially checking the exact same logic as **Fizzbuzz**, so I feel there isn’t much to be said about the fundamentals of the math and logic behind this.

The **Go** language, however, has a semantically convenient and syntactically beautiful way to implement this. Instead of writing cascading `if {} else if {} else {}`

statements that get tedious and ugly, `switch`

statements without arguments are used. A `switch`

statement without an argument is the same as writing `switch true`

, meaning it will evaluate each `case`

in order until one evaluates to true. This allows me to write more readable code, while also bypassing any extraneous redundancy checking.

```
// Returns the sum of all multiples of 3 and 5 below n.
func sumThreeFive(n uint64) sum uint64 {
sum = 0
for i := uint64(0); i < n; i++ {
switch {
case i%3 == 0:
sum += i
case i%5 == 0:
sum += i
}
}
return sum
}
```