2014-11-08 47 views
0

我是Python編程的絕對初學者,這是我在Project Euler中的第一個程序(問題1)。我的推理在哪裏錯了?

問題1在項目歐拉問:

如果我們在下面列出10是3或 5的倍數的所有自然數,我們得到了3,5,6和9這倍數的總和是23

找到3所有倍數低於1000

我感覺我的推理和或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)  
+1

你能解釋一下你的問題是什麼?你的問題必須是獨立的。 – 2014-11-08 20:11:25

回答

0

您正在添加一些數字兩次。例如,15是3和5的倍數,但不應該添加兩次。

我會做一些簡單的使用模數,只有一個循環。

實施例(沒有測試):

x=0 
y=0 

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

print("Sum equals ",y) 
2

的問題是:

查找35下面1000所有倍數的總和。

所有你需要做的,是通過以下1000數字迴路,如果這個數整除3i % 3 == 0)或5i % 5 == 0),將其追加到列表multiples和打印所有元素的總和的multiplessum(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