ВВЕРХ
ВНИЗ
  • Home
  • While
  • While 24 - 27

Предыдущее и последующее числа Фибоначчи, их порядковые номера

Приветствую на этой странице читателей моего сайта о программировании для начинающих. Мы снова решим несколько задач решебника Абрамяна, все они посвященные числам Фибоначчи.

While24 — проверяем, является ли введенное число числом Фибоначчи.

While25 — определить первое число Фибоначчи, большее N.

While26 — определить предыдущее и последующее числа Фибоначчи.

While27 — определить порядковый номер числа Фибоначчи N.

While24. Дано целое число N (> 1). Последовательность чисел Фибоначчи FK определяется следующим образом:

F1 = 1,   F2 = 1,   FK = FK−2 + FK−1,   K = 3, 4, … .

Проверить, является ли число N числом Фибоначчи. Если является, то вывести true, если нет — вывести false.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
var
  N, F1, F2, c: integer;

begin
  write('N = ');
  readln(N);
  F1 := 1; { <== первый член ряда Фибоначчи }
  F2 := 1; { <== второй член ряда Фибоначчи }
  { Выполняем цикл до тех пор, пока введенное нами 
  число N больше очередного члена ряда Фибоначчи: }
  while (N > F2) do
  begin
    c := F2; { <== запоминаем второй член ряда }
    F2 := F1 + F2; { <== находим новое значение F2 }
    F1 := c { <== первому члену приписываем предыдущий (c=F1) }
  end;
  { Выводим значение логического выражения N = F2. Если 
  выражение истинно, то мы получим True, иначе - False: }
  writeln(N = F2);
  readln
end.

While25. Дано целое число N (> 1). Найти первое число Фибоначчи, большее N (определение чисел Фибоначчи дано в задании While24).

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
var
  N, F1, F2, c: integer;

begin
  write('N = ');
  readln(N);
  F1 := 1; { <== первый член ряда Фибоначчи }
  F2 := 1; { <== второй член ряда Фибоначчи }
  { Выполняем цикл до тех пор, пока очередной
  член ряда Фибоначчи НЕ превосходит N: }
  while (F2 <= N) do
  begin
    c := F2; { <== запоминаем второй член ряда }
    F2 := F1 + F2; { <== находим новое значение, сложив предыдущие }
    F1 := c { <== первый член заменяем на предыдущий (c=F1) }
  end;
  { Выводим первое число Фибоначчи, большее N: }
  writeln('Ближайшее большее число Фибоначчи: ', F2);
  readln
end.

While26. Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK (определение чисел Фибоначчи дано в задании While24). Найти целые числа FK−1 и FK+1 — предыдущее и последующее числа Фибоначчи.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
var
  N, F1, F2, c: integer;

begin
  write('N = ');
  readln(N);
  F1 := 1; { <== первый член ряда Фибоначчи }
  F2 := 1; { <== второй член ряда Фибоначчи }
  { Выполняем цикл до тех пор, пока введенное нами 
  число N больше очередного члена ряда Фибоначчи: }
  while (N > F2) do
  begin
    c := F2; { <== запоминаем второй член ряда }
    F2 := F1 + F2; { <== находим новое значение F2 }
    F1 := c { <== первому члену приписываем предыдущий (c=F1) }
  end;
  if N = F2 then writeln('Соседние числа Фибоначчи: ', F1, ' ', F1+F2)
  else writeln(N, ' не является числом Фибоначчи!');
  readln
end.

While27. Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK (определение чисел Фибоначчи дано в задании While24). Найти целое число K — порядковый номер числа Фибоначчи N.

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
var
  N, F1, F2, K: integer;

begin
  write('N = ');
  readln(N);
  F1 := 1; { <== первый член ряда Фибоначчи }
  F2 := 1; { <== второй член ряда Фибоначчи }
  K := 2;
  { Выполняем цикл до тех пор, пока введенное нами 
  число N больше очередного члена ряда Фибоначчи: }
  while (N > F2) do
  begin
    F2 := F1 + F2; { <== новое значение F2 }
    F1 := F2 - F1; { <== новое значение F1 }
    inc(K) { <== увеличиваем номер члена F2 }
  end;
  writeln;
  if N = F2 then writeln('Порядковый номер числа Фибоначчи: ', K)
  else writeln(' ', N, ' не является числом Фибоначчи!');
  readln
end.

Посмотрите ещё материалл Арифметическая и геометрическая прогрессии. Последовательность Фибоначчи.


Яндекс.Метрика