一尘不染

如何在Python中找到1000以下3或5的所有倍数的和?

algorithm

不知道我是否应该将其发布在math.stackexchange上,但是它包含更多的编程功能,因此我将其发布在这里。

这个问题似乎很简单,但我现在在这里已经坐了至少一个小时,还没弄清楚。我尝试了不同的解决方案,并为其阅读了数学公式,但是在编写代码时,它给我的答案不正确!我为此提出了两种不同的解决方案,都给了我错误的答案。第一个解决方案给我265334,而第二个解决方案给我232169。答案为233168,因此第二个解决方案更接近。

我应该提到这是来自Euler项目的一个问题,这是第一个确切的问题。

这是我的代码。有什么想法吗?

nums = [3, 5]
max = 999

result = 0
for num in nums:
    for i in range(1,max):
        if num*i < max:
            result += num*i
print result


result = 0
for i in range(0,max):
    if i%3 == 0 or i%5 == 0:
        result += i

print result

阅读 514

收藏
2020-07-28

共1个答案

一尘不染

range(k,max)不包含max,因此您实际上要检查并包含998(而999是3的倍数)。使用range(1,1000)代替。

2020-07-28