Ближайшее число Фибоначчи - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д