Проект Эйлера блог
Ссылка на github

Проект Эйлер 2 задача на PHP

Решая эту задачу, постарался не только отработать конструкции языка PHP, но и сделать небольшой онлайн-калькулятор, позволяющий проверить ваши вычисления.

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

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

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

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

Онлайн-калькулятор: "Поиск ближайшего числа Фибоначчи"



Описание алгоритма работы программы

1  <?php
2  $first_fib  = 1;
3  $second_fib = 2;
4  $max_fib    = 4000000;
5  $answer     = 0;
6  while ($second_fib <= $max_fib) {
7      if ($second_fib % 2 == 0 ) {
8          $answer += $second_fib;
9      }
10 $next_fib   = $first_fib + $second_fib;
11 $first_fib  = $second_fib;
12 $second_fib = $next_fib;
13 }
14 echo 'Answer = ' . $answer;
15 ?>

Во-первых, нужно помнить, что согласно заданию, и самому определению чисел Фибоначчи: “следующий элемент получается при сложении двух предыдущих”.

10 $next_fib = $first_fib + $second_fib;

Во-вторых, четное число делится на 2 без остатка:

7 if ($second_fib % 2 == 0 ) {

Ну и главное, не нужно вычислять каждый элемент ряда каждый раз заново.
Поэтому как только будет получено число Фибоначчи, следующее за первыми двумя:

10 $next_fib = $first_fib + $second_fib;

...значения обновляются:

11 $first_fib = $second_fib;

...первое число принимает значение второго:

12 $second_fib = $next_fib;

...второе – третьего (суммы первых двух).
Такой цикл продолжается снова и снова до тех пор, пока в итоге не дойдет до искомых 4 000 000.

Для контрибьютеров

Вы можете предложить свой вариант решения задачи и прислать в виде pull request.

В случае, если вы заметили какие то неточности в статье или хотите предложить какие-либо изменения в верстке этого сайта, вы всегда можете создать pull request в этот проект.

Если у вас есть идеи по CSS-настройкам этого сайта, тогда прочитайте эту статью.