# Project Euler problem 5

Source code available on GitHub.

This problem seems simpler than the last few to me. It’s fairly clear how to proceed. We can just check every multiple of 20, starting at 20 and adding 20 every time. If the multiple is divisible by all of the numbers 1 through 19, we stop and print the output.

To check every multiple of 20 indefinitely, we use a `while` loop:

```i = 20
while True:
# Check stuff here
i += 20```

To check whether `i` is divisible by all the numbers 19, 18, 17 and so on, we just do a `for` loop:

```for j in range(19,0,-1):
if i % j != 0:
# Failed test
# Passed test```

Note that in the `range` function we’re starting at 20 and going down to 1 rather than the other way round (the `-1` tells `range()` to add `-1` each time rather than `1`): this is more efficient as it’s much less likely for a number to be divisible by, say, 19 than it is for it to be divisible by, say, 3.

The number `i` has only passed the test if we get through the whole for loop without the `if` statement ever being triggered. We only want to do the increment and try again if `i` fails the check, so we put `i += 20` inside the `if` statement:

```i = 20
while True:
for j in range(19,0,-1):
if i % j != 0:
i += 20
break```

The `break` statement forces us out of the `for` loop and consequently restarts the `while` loop with the new value of `i`.

Now, if we do indeed get to the end of the `for` loop with every `j` being a factor of `i`,  the current value of `j` will be `1` (as the `for` loop iterates downwards). Hence, if this is the case, `i` is our answer. We’ll hold it in some other variable `smallest_multiple` and break out of the `for loop:`

```i = 20
while True:
for j in range(19,0,-1):
if i % j != 0:
i += 20
break
if j == 1: # If checked all of them and still here
smallest_multiple = i
break```

The last thing to do is check whether `smallest_multiple` actually holds a value, and if so break out of the whole `while` loop and print it off. We’ll set `smallest_multiple = 0` initially to help us.

We’re done! Code below:

```smallest_multiple = 0
i = 20
while True:
for j in range(19,0,-1):
if i % j != 0:
i += 20
break
if j == 1: # If checked all of them and still here
smallest_multiple = i
break
if smallest_multiple != 0:
break
print(smallest_multiple)```