Ваш код не работает, потому что вы не делаете это до n
, вы делаете это до 4000000
.
Вы можете объединить обе свои функции, чтобы создать это.
def sum_even_fibs(n):
a, b = 0, 1
t = 0
for i in range(n):
a, b = b, a + b
if a % 2 == 0:
t += a
return t
print(sum_even_fibs(10)) #44
, как указывал кто-то в комментариях, каждое третье число является четным, поэтому вы можете сжать его до
def sum_even_fibs(n):
a, b = 0, 1
t = 0
for i in range(n // 3):
a, b = a + 2 * b, 2 * a + 3 * b
t += a
return t
print(sum_even_fibs(10)) #44
для конкретного случая, когда вы не хотите делать какие-либо числа выше 4000000.Вы можете добавить это, если заявление
def sum_even_fibs(n):
a, b = 0, 1
t = 0
for i in range(n // 3):
a, b = a + 2 * b, 2 * a + 3 * b
if a >= 4000000:
print("the fibonacci numbers in this calculation exceed 4000000")
return None
t += a
return t