一.问题描述
官方问题描述如下:
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倍数的和。
二.问题分析
根据题目要求,解决问题的思想比较简单,可以通过循环快速地计算出结果。但是,需要注意地是:
对于小于1000的所有的自然数,它们可以分为四大类:
(1).既不是3的倍数,又不是5的倍数;
(2).虽是3的倍数,但不是5的倍数;
(3).虽是5的倍数,但不是3的倍数;
(4).既是3的倍数,又是5的倍数.
显然,(2).(3).(4)三部分组成的数集才是题目要求的数集.
三.问题解决
#-*- coding:utf-8 -*-
#Multiples of 3 and 5 Python2.7 Windows 10
import time
def sumThreeAndFiveTimes(num):
sum=0
for i in xrange(1,num,1):
if i%3==0 or i%5==0:
sum+=i
return sum
if __name__=="__main__":
num=input("Please input a positive number :")
start=time.clock() #计时开始
print "The result is %d."%sumThreeAndFiveTimes(num) #获得所求结果
end=time.clock() #计时结束
print "Time consumed is %f s."%(end-start) #输出计算秒数
输出结果:
四.问题总结
本问题的逻辑简单明了,但是在编程过程中需要思考其中的小细节,避免产生不必要的漏洞。