在1000

时间:2017-09-18 19:28:51

标签: python-3.x

我刚刚开始尝试使用Project Euler的问题而且我已经陷入了第一个代码本身。有人可以在下面的代码中告诉我我哪里出错了。

问题陈述如下:

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.

我的解决方案如下:

multiple1 = 5
multiple2 = 3
index = 2
sum = 0
while multiple1 < 1000 or multiple2 < 1000:
    if multiple1 < 1000:
        sum = sum + multiple1
        multiple1 = 5 * index
    if multiple2 < 1000:
        sum = sum + multiple2
        multiple2 = 3 * index
    index = index + 1

print (sum)

我知道有人已经在某个地方发布了解决方案,但我只是想弄明白我的逻辑错误。

有人可以帮忙。

2 个答案:

答案 0 :(得分:0)

您的代码将生成重复值。例如,15是3和5的倍数。因此,每次数字是3和5的倍数时,您都会在总和中添加重复值。下面的代码可以解决您的问题。

multiple1 = 5
multiple2 = 3
index = 1
sum = 0
while multiple1 < 1000 or multiple2 < 1000:
    multiple1 = 5 * index
    multiple2 = 3 * index
    if (multiple1 < 1000) and (multiple1 % 3 != 0):
        sum = sum + multiple1
    if (multiple2 < 1000):
        sum = sum + multiple2
    index = index + 1
print (sum)

答案 1 :(得分:0)

最简单的方法

total = 0
for i in range(1,1000):
    if i%3 == 0 or i % 5 == 0:
       total += i
print(total)