我是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)
答案 0 :(得分:2)
问题是:
查找
3
以下5
或1000
的所有倍数之和。
如果数字可以被1000
(3
)或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)