【发布时间】:2012-09-22 06:55:17
【问题描述】:
所以我在这里遇到了这个问题:
如果我们列出所有小于 10 且是 3 或 5 倍数的自然数,我们会得到 3、5、6 和 9。
这些倍数之和是 23。
求 1000 以下所有 3 或 5 的倍数之和。
我在这里写了这个:
def multiples(num, below):
counter = 1
z = 0
while True:
x = num * counter
if x < below:
z += x
else:
break
counter += 1
return z
below = 1000
print "Multiples of 3: " + str(multiples(3, below))
print "Multiples of 5: " + str(multiples(5, below))
print "Added: " + str(multiples(3, below) + multiples(5, below))
如果我将 below 设置为 10,我会得到正确答案,即 23
Multiples of 3: 18
Multiples of 5: 5
Added: 23
但是当我将它设置为 1000 时,我得到了这个:
Multiples of 3: 166833
Multiples of 5: 99500
Added: 266333
这应该是错误的,有什么我没有得到的吗?
【问题讨论】:
-
这将是 Euler 项目 1 号吗? projecteuler.net/problem=1
-
非常重要。我第一个失败了xD。不,我现在做得很好,通过了一些。