Euler Problem 001

Mar 13, 2017 09:03 · 272 words · 2 minute read javascript toy problems development euler

The problem

If 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.

Solution

The first algorithm is super straightforward. We want to simply loop over each number between the start and the end checking if the number is a multiple of 3 or 5 and then adding that to the sum. Now this is going to O(n). It isn’t bad at all.

var isMultipleOfThree = function(number) {
  return (number % 3) === 0;
}

var isMultipleOfFive = function(number) {
  return (number % 5) === 0;
}

var eulerProblemOne = function(upperBound){
  var sum = 0;
  
  for(var i = 0; i < upperBound; i+=3){
    if(isMultipleOfFive(i) || isMultipleOfThree(i)){
        sum += i;
    }
  }
  
  return sum;
}

But we can do a little better than this. Instead of iterating over every single number between 0 and the upper bound we can simply add up to the upper bound across 3 and 5 making sure to account for double counting.

var isMultipleOfThree = function(number) {
  return (number % 3) === 0;
}

var isMultipleOfFive = function(number) {
  return (number % 5) === 0;
}

var eulerProblemOne = function(upperBound){
  var sum = 0;
  
  for(var i = 3; i < upperBound; i+=3){
    if(!isMultipleOfFive(i)){
      sum += i;
    }
  }
  
  for(var i=5; i < upperBound; i+=5){
    sum +=i;
  }
  return sum;
}

If you’d like to see the full code please see my daily toy problem exercises that I’ve been working on. It includes tests and a README.

tweet Share