В данной задаче продолжаем знакомиться с языком 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(); } }
Во-первых, нужно помнить, что согласно заданию и самому определению чисел Фибоначчи: “следующий элемент получается при сложении двух предыдущих”.
Во-вторых, четное число делится на 2 без остатка.
Ну и главное, не нужно вычислять каждый элемент ряда каждый раз заново. Потому, как только будет получено число Фибоначчи, следующее за первыми двумя.
...значения обновляются:
...первое число принимает значение второго:
...второе – третьего (суммы первых двух).
Такой цикл
продолжается снова и снова до тех пор, пока в итоге не дойдет до
искомых 4000000.
Постепенно приближаем сложность задачи к реальной - отработаю
запуск программы на удаленном сервере.
Арендую vps
сервер на время (гайд внизу).
...подключаюсь к нему...
...и напишу текст программы во встроенном текстовом редакторе(vim,
nano, лично я пользуюсь neovim).
Краткий список
команд ниже.
Небольшой гайд по установке java на сервер:
Скомпилирую программу...
Вопросы компиляции java были подробно описаны в статье.
Запуск программы, ввод максимального числа, до которого следует производить поиск и выведется искомый ответ
$ java Solution Input max value Fibonacci sequence term: 4000000 Answer is 4613732
В данной программе применили несколько новых конструкций языка java: