Ближайшее число Фибоначчи - Pascal

Узнай цену своей работы

Формулировка задачи:

Задано натуральное число N. Напишите программу, которая находит ближайшее к N число Фибоначчи. Если ближайших чисел несколько, то выведите меньшее из них. Например: 4 3 34 34 1596 1597

Решение задачи: «Ближайшее число Фибоначчи»

textual
Листинг программы
  1. const ln5d2 = ln(5) / 2;
  2.       lnfi = ln(1 + sqrt(5)) - ln(2);
  3. var n, k, f1, f2: longint;
  4. begin
  5.   readln(n);
  6.   k := round((ln5d2 + ln(n)) / lnfi);
  7.   f1 := round(exp((k - 1) * lnfi - ln5d2));
  8.   f2 := round(exp(k * lnfi - ln5d2));
  9.   if n - f1 > f2 - n then writeln(f2) else writeln(f1)
  10. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы