Проект Эйлера

Задача 2 «Четные числа Фибоначчи»

Условие:

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

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

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

Варианты решений:

1. Самый простой и удобочитаемый:

f1, f2, s = 0, 1, 0
while f2 <= 4000000:
    s = s + f2 if f2 % 2 == 0 else s
    f1, f2 = f2, f1 + f2
print(s)

2. Более красивый вариант, с использованием класса:

class FibIter:
    """
    Класс-итератор, возвращающий при каждом вызове __next__ число Фибоначчи.
    limit - максимальное кодичество чисел из ряда Фибоначчи, которое может выдать экземпляр класса.
    """

    def __init__(self, limit):
        self.limit = limit
        self.counter = 0
        self.a, self.b = 0, 1

    def __next__(self):
        if self.counter >= self.limit:
            raise StopIteration
        result = self.a + self.b
        self.a = result
        self.a, self.b = self.b, self.a
        self.counter += 1
        return result

    def __iter__(self):
        return FibIter(self.limit)

    def reset(self):
        self.__init__(self.limit)


F = FibIter(100)
L = [i for i in F if i % 2 == 0 and i < 4_000_000]

print("sum: {}".format(sum(L)))

Пишите в комментариях какой у вас ответ, как быстро выполнилась программа и варианты ваших решений. Потом выберем лучшее.

Смотрите список задач по Проекту Эйлера

admin

Recent Posts

10 удалённых Python-вакансий

Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…

6 месяцев ago

Где искать Python-вакансии в 2026 году: зачем на Talanto.work появился отдельный сценарий поиска

Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…

6 месяцев ago

Срезы в Python со всеми подробностями

Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…

8 месяцев ago

Возведение в степень в Python: полное руководство

В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…

9 месяцев ago

Как удалить дубликаты из списка Python?

Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…

9 месяцев ago

Виртуальный (shared) хостинг от SpaceWeb: технический обзор

Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…

11 месяцев ago