Problem 1 - Multiples of 3 and 5
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.
Iterative solution
it gets very slow for 1,000,000 because its time complexity is O(n) (linear)
def sum(maximum, multiplier): sum = 0 for x in range(multiplier, maximum, multiplier): sum += x return sum target = 1000 print sum(target, 3) + sum(target, 5) - sum(target, 3 * 5)
Fastest solution
it never gets slow because its time complexity is O(1) (constant)
def sum(maximum, interval): maximum -= 1 an = maximum - (maximum % interval) n = int(maximum / interval) return n * (interval + an) / 2 target = 1000 print sum(target, 3) + sum(target, 5) - sum(target, 3 * 5)
No comments:
Post a Comment