Ближайшее число Фибоначчи - 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.

Объяснение кода листинга программы

  1. Объявляется константа ln5d2 и ей присваивается значение выражения ln(5) / 2
  2. Объявляется константа lnfi и ей присваивается значение выражения ln(1 + sqrt(5)) - ln(2)
  3. Объявляются переменные n, k, f1, f2 типа longint
  4. Вводится значение переменной n с помощью функции readln
  5. Вычисляется значение переменной k по формуле round((ln5d2 + ln(n)) / lnfi)
  6. Вычисляются значения переменных f1 и f2 по формулам round(exp((k - 1) * lnfi - ln5d2)) и round(exp(k * lnfi - ln5d2)), соответственно
  7. Происходит проверка условия: если разница между n и f1 больше, чем разница между f2 и n, то выводится значение f2, иначе выводится значение f1

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы