我的推理在哪里错了?

时间:2014-11-08 20:07:23

标签: python

我是Python编程的绝对初学者,这是我在Project Euler中的第一个程序(问题1)。

Euler项目中的问题1:

  

如果我们列出10以下的所有自然数,它们是3或3的倍数   5,我们得到3,5,6和9.这些倍数的总和是23。

     

查找低于1000的3或5的所有倍数的总和。

我觉得我的推理在某个地方是错的,但我看不出在哪里或为什么?我得到266333。

i=0
s=0
j=0
r=0

while i<1000:
  s=s+i
  i=i+3

while j<1000:
  r=r+j
  j=j+5
print("sum=",s+r)    

2 个答案:

答案 0 :(得分:2)

问题是:

  

查找3以下51000的所有倍数之和。

如果数字可以被10003)或i % 3 == 0 5整除,那么您需要在i % 5 == 0下方循环显示数字multiples }),将其附加到列表multiples并打印sum(multiples)multiples = [] for i in range(1000): if i % 3 == 0 or i % 5 == 0: multiples.append(i) print sum(multiples) # 233168 )的所有元素的总和。

print sum([i for i in range(1000) if i % 3 == 0 or i % 5 == 0])
# 233168

更简化的代码:

{{1}}

答案 1 :(得分:0)

您需要两次添加一些数字。例如,15是3和5的倍数,但你不应该加两次。

我使用modulo做一些更简单的事情,只有一个循环。

示例(尚未经过测试):

x=0
y=0

while x<1000
   if (x%5==0 or x%3==0):
      y=y+x
   x+=1

print("Sum equals ",y)