Алгоритм решения задачи довольно простой, но вдруг кому пригодится.
Условия задачи
"Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2 первые 10 элементов будут:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона."
Решение задачи
Алгоритм решения буквально повторяет само определение чисел Фибоначчи: "следующий элемент получается при сложении двух предыдущих".
Создаем несколько переменных:
- fib1 - первое число Фибоначчи
- fib2 - второе число Фибоначчи
- fib_next = fib1 + fib2 - следующее за ними число Фибоначчи
- event_sum - сумма всех четных элементов ряда Фибоначчи
Находим следующую пару чисел (event_sum). Присваиваем первому числу р(fib1) значение второго(fib2), второму - значение fib_next.
Если число четное (остаток от деления на 2 равен нулю), прибавляем его к event_sum.
Числа перебираем в цикле while, пока не дойдем до 4000000.
Можно ли ускорить работу программы?
Запустил несколько раз и получил разброс времени выполнения от 0.4 до 0.55 секунд.
Попробовал увеличить число итераций в сто раз - перебирал числа Фибоначчи до четырехсот миллионов.
Время вычисления не увеличилась, видимо слишком простые пока вычисления.
Ответ на задачу:
P.S. Изначальная цель блога - получить "фидбек" в комментариях, чтобы более опытные "кодеры" указывали мне на ошибки, советовали и всячески помогали в саморазвитии.
Также приглашаю всех на мой сайт)
На нем Вы можете посмотреть ответ на задачу Эйлера #2 (когда необходима лишь небольшая подсказка) и последний, самый быстрый вариант решения.
В общем, добро пожаловать на канал))