2014-09-27 5 views
-1

Я решение упражнения проектного Эйлера 1:Почему сумма подсчитывает неправильный размер?

Если мы все натуральные числа меньше 10, кратные 3 или 5, мы получаем 3, 5, 6 и 9. Суммы этих мультипликаторов является 23. Найдите сумму всех чисел, кратных 3 или 5 ниже 1000.

Я застрял на этом на некоторое время и после выполнения некоторых исследований это, как вычислить сумму.

# range of numbers 0 to 1000 
# iterate through numbers 
for number in range(1001): 
    multiples = []  
    # multiples of 3 or 5 
    if (number % 3 == 0) or (number % 5 == 0): 
     # store num into array 
     multiples.append(number) 

# add up all elements in array 
total = sum(multiples) 
print total 

Мой выход 1000

UPDATE: Я только что прочитал на Project Euler не размещать решение в Интернете. Я думаю, мой вопрос довольно близок к решению. Если модераторы считают, что его нужно удалить, пожалуйста, сделайте это.

+1

Возьмите 'multiples' вне цикла. – Akavall

+2

Чтение это должно помочь: http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –

ответ

2

Потому что multiples установлен в пустой список внутри цикла.

multiples = [] # <---------- 
for number in range(1001): 
    if (number % 3 == 0) or (number % 5 == 0): 
     multiples.append(number) 
+1

Теперь я вижу. список, находящийся внутри цикла, каждый раз сбрасывался? –

+1

@Beast_Code, да, это так. – falsetru

Смежные вопросы