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.
如果我们列出所有比10小的自然数,并且是3或者5的倍数的话,我们会得到3,5,6和9. 这些倍数的总和是23。
找到所有1000以下3或者5的倍数的总和。
一般第一道题都比较简单。这道题只要把3的倍数总和加上5的倍数的总和减去15的倍数的总和就可以了。
以下是我用Python写的源码:
- def GetMultiplesSum(n, border):
- i = border / n
- return n * ( i + 1 ) * i / 2
- if __name__ == '__main__':
- print "The Answer for Problem 1 is:" + str( GetMultiplesSum(3,999) + GetMultiplesSum(5,999) - GetMultiplesSum(15,999) )
当然,python有更加简洁的解决方案:
- print "Another way to solve: " + str( sum( range(3, 1000,3) ) + sum( range(5, 1000, 5)) - sum( range( 15, 1000, 15)) )
注意一点:range产生的序列为左闭合,右开放的区间,即range(1,10)为[1,2,...,9].