java практика: проект Эйлера 2 задача
java практика сайт
ссылка на github

ПРОЕКТ ЭЙЛЕРА 2 ЗАДАЧА

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

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

Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 10 элементов будут:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89...
Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона.

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



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

import java.util.Scanner;

public class Solution {
  public static void main(String[] args) {

    int firstFib = 1;
    int secondFib = 2;
    int nextFib = 3; // 1 + 2
    int answer = 0;

    Scanner input = new Scanner(System.in);
    System.out.print("Input max value: ");
    int max = input.nextInt();

    while (nextFib < max) {

      if (secondFib % 2 == 0) {
        answer += secondFib;
      }

      nextFib = firstFib + secondFib;
      firstFib = secondFib;
      secondFib = nextFib;
    }

    System.out.println("Answer is " + answer);
    input.close();
  }
}

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

nextFib = firstFib + secondFib;

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

if (secondFib % 2 == 0)

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

nextFib = firstFib + secondFib;

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

firstFib = secondFib;

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

secondFib = nextFib;

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

DevOps

Постепенно приближаем сложность задачи к реальной - отработаю запуск программы на удаленном сервере.
Арендую vps сервер на время (гайд внизу).

...подключаюсь к нему...

...и напишу текст программы во встроенном текстовом редакторе(vim, nano, лично я пользуюсь neovim).
Краткий список команд ниже.

Небольшой гайд по установке java на сервер:

Скомпилирую программу...

javac Solution.java

Вопросы компиляции java были подробно описаны в статье.

Запуск программы, ввод максимального числа, до которого следует производить поиск и выведется искомый ответ

$ java Solution
Input max value Fibonacci sequence term: 4000000
Answer is 4613732

В данной программе применили несколько новых конструкций языка java: