DisclaimerThis blogpost provides solution to the first problem from Project Euler. If

you want to figure out a solution yourself, go to the

Problem 1's page and come back later :)

This is going to be a very brief post as the problem is very simple as well.

It's similar to pretty well known `FizzBuzz`

problem, which is a basic

recruiting task or a simple task at the beginning of one's programming-learning journey.

The ProblemIf we list all the natural numbers below 10 that are multiples of 3 or 5,

we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

The simplest `O(n)`

solution would be iteration over the numbers and find multiples of 3 and 5.

## Solution

The simplest solution using a loop would like something like this:

```
private fun loopApproach(input: Int): Int {
var acc = 0
for (i in 3 until input) {
if (i.mod(3) == 0 || i.mod(5) == 0) {
acc += i
}
}
return acc
}
```

To be more `kotlin`

you could use `fold`

instead of usual `for-loop`

:

```
private fun foldApproach(input: Int): Int =
(3 until input).fold(0) { acc, value ->
if (value.mod(3) == 0 || value.mod(5) == 0) {
acc + value
} else {
acc
}
}
```

The `fold`

, however, is a bit slower. With large input value

(`1_000_000_000`

instead of `1_000`

and I need use `Long`

for that) which takes in both cases almost 3 seconds on my computer, the difference is over

`100ms`

.

## Conclusion

The simplest problem is done. Let's move on to the next and let's see what we can get out of it.

Thank you for your time and see you in the next one!

## Latest comments (0)