Приветствую на этой странице читателей моего сайта о программировании для начинающих. Мы снова решим несколько задач решебника Абрамяна, все они посвященные числам Фибоначчи.
While24. Дано целое число N (> 1). Последовательность чисел Фибоначчи FK определяется следующим образом:
F1 = 1, F2 = 1, FK = FK−2 + FK−1, K = 3, 4, … .
Проверить, является ли число N числом Фибоначчи. Если является, то вывести true, если нет — вывести false.
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.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 While25. Дано целое число N (> 1). Найти первое число Фибоначчи, большее N (определение чисел Фибоначчи дано в задании While24).
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.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 While26. Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK (определение чисел Фибоначчи дано в задании While24). Найти целые числа FK−1 и FK+1 — предыдущее и последующее числа Фибоначчи.
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.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 While27. Дано целое число N (> 1), являющееся числом Фибоначчи: N = FK (определение чисел Фибоначчи дано в задании While24). Найти целое число K — порядковый номер числа Фибоначчи N.
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.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 Посмотрите ещё материалл Арифметическая и геометрическая прогрессии. Последовательность Фибоначчи.