Каждый 3-й элемент в последовательности Фибоначчи является четным. Итак, вы могли бы иметь это:
prev, cur = 0, 1
count = 1
total = 0
while True:
prev, cur = cur, prev + cur
count = count + 1
if cur >= 4000000:
break
if count % 3 == 0:
total += cur
print(total)
или это (изменение вашего кода как можно меньше):
even, odd = 0,1 # this line was corrected
total = 0
while True:
secondOdd = even + odd # this line was changed
even = odd + secondOdd #Even # this line was changed
if even < 4000000:
total += even
odd = secondOdd + even # this line was added
else:
break
print total
Другой способ (с помощью некоторой простой математики) проверить, что сумма a2+a5+a8+a11+...+a(3N+2)
(сумма четных значений Фибоначчи) равна (a(3N+4)-1)/2
. Таким образом, если вы можете рассчитать непосредственно это число, нет необходимости вычислять все предыдущие числа Фибоначчи.