2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
This one needed some rambling thought before I settled down to an approach. I had thought that there should be a more effective method than simply counting upwards while testing each number in the range.
I settled on the simple approach when I realised that when checking the current highest number, you can skip all remaining items in the range should there be a single failure to evenly divide.
My brief, if inelegant solution – which I’ll hopefully refine in the next few days – is copied below (written in Ruby). I can’t help but think there are ways to:
- cut down the number of division checks
- increment the high number by greater degrees each time
So plenty still to examine with this one.
def checkHigh()
rangeLow = 1
rangeHigh = 20
i = rangeHigh
singleNumbersNonRemainDivCount = 0
while i >= rangeLow
if ($greatestNumber % i) > 0
singleNumbersNonRemainDivCount=0
$greatestNumber = $greatestNumber+1
i = rangeHigh
else
singleNumbersNonRemainDivCount=singleNumbersNonRemainDivCount+1
if singleNumbersNonRemainDivCount == rangeHigh
puts "Highest number: #{$greatestNumber}"
$greatestNumber = $greatestNumber-1
end
i=i-1
end
end
end
checkHigh()
























