The problem:
Add all the natural numbers below one thousand that are multiples of 3 or 5.
My Python implementation:
vsum, i = 0, 0 while i < 1000: vsum += i if i % 3 == 0 or i % 5 == 0 else 0 i += 1 print 'sum: ' + str(vsum)
My Ruby implementation:
sum = 0
(0...1000).each { |v| sum += (v % 3 == 0 or v % 5 == 0) ? v : 0 }
puts "sum: #{sum}"
Contribution by Lov Loothra (250+ times faster than mine):
import sys
def main():
N = 999
#sum of all multiples of 3 < 1000
sum3 = (N/3*(N - N%3 + 3))/2
#sum of all multiples of 5 < 1000
sum5 = (N/5*(N - N%5 + 5))/2
#sum of all multiples of 3 & 5 (i.e. 15) < 1000
sum15 = (N/15*(N - N%15 + 15))/2
#final result
print sum3 + sum5 - sum15