Проект Эйлера - Задача 2


Четные числа Фибоначчи

Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 11 элементов будут:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона.

Моё решение (Python) под катом:

В начале было интересно просто повторить ряд Фибоначчи из примера:

a = 1 b = 0 c = 0 i = 0 while i <= 10: c = a + b print(c) i += 1 a = b b = c
  1. Задаём переменные a, b, c и i с которыми и будем работать.
  2. Запускаем луп 10 раз и получаем ряд Фибоначчи из примера.
Круто!! Работает. Теперь можно переходить к решению задачи.
Значит надо добавить условие по которому мы будем выбирать только чётные элементы и складывать их. Главное чтобы сам элемент не превышал 4М.

a = 1 b = 0 c = 0 sum = 0 while c <= 4000000: c = a + b if c % 2 == 0: sum += c a = b b = c print(sum)

  1. Переменную i меняем на sum. В ней и будем всё суммировать.
  2. А в переменной с мы будем хранить последний элемент ряда. Таким образом мы будет отслеживать только сами элементы ряда а не все числа до 4М.
Питон выдал ответ 4613732.

Я так решил.

4 комментария:

  1. nums = [1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    high = nums[-1]
    while high < 4000000:
    preHigh = nums[-2]
    high += preHigh
    nums.append(high)
    print(nums)

    ОтветитьУдалить
    Ответы
    1. suma = []
      for i in nums:
      if (i % 2 == 0):
      suma.append(i)

      print(sum(suma))

      Удалить
  2. Можно было сделать b += a
    a = b - a
    Тогда не нужно вводить переменную c

    ОтветитьУдалить
  3. a = 1
    b = 2
    c = 3
    d = 0
    while a < 4000000 and b < 4000000 and c < 4000000:
    a = c + b
    b = a + c
    c = a + b
    if a%2==0:
    d = d + a
    if b%2==0:
    d = d + b
    if c%2==0:
    d = d +c
    print(d)

    ОтветитьУдалить