Ближайшее число Фибоначчи - Pascal
Формулировка задачи:
Задано натуральное число N. Напишите программу, которая находит ближайшее к N число Фибоначчи. Если ближайших чисел несколько, то выведите меньшее из них.
Например:
4 3
34 34
1596 1597
Решение задачи: «Ближайшее число Фибоначчи»
textual
Листинг программы
- const ln5d2 = ln(5) / 2;
- lnfi = ln(1 + sqrt(5)) - ln(2);
- var n, k, f1, f2: longint;
- begin
- readln(n);
- k := round((ln5d2 + ln(n)) / lnfi);
- f1 := round(exp((k - 1) * lnfi - ln5d2));
- f2 := round(exp(k * lnfi - ln5d2));
- if n - f1 > f2 - n then writeln(f2) else writeln(f1)
- end.
Объяснение кода листинга программы
- Объявляется константа
ln5d2
и ей присваивается значение выраженияln(5) / 2
- Объявляется константа
lnfi
и ей присваивается значение выраженияln(1 + sqrt(5)) - ln(2)
- Объявляются переменные
n
,k
,f1
,f2
типа longint - Вводится значение переменной
n
с помощью функцииreadln
- Вычисляется значение переменной
k
по формулеround((ln5d2 + ln(n)) / lnfi)
- Вычисляются значения переменных
f1
иf2
по формуламround(exp((k - 1) * lnfi - ln5d2))
иround(exp(k * lnfi - ln5d2))
, соответственно - Происходит проверка условия: если разница между
n
иf1
больше, чем разница междуf2
иn
, то выводится значениеf2
, иначе выводится значениеf1
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д