Дан диапазон чисел от n до k, посчитать сколько чисел Фиббоначи попадает в этот диапазон.
Для начала нам понадобится фомула вычисления числа фиибоначи по его номеру.
а = (a1^n-a2^n)/корень из 5, где a1=(1+корень из 5)/2, a2=(1-корень из 5)/2.
теперь вводим начало диапазона и конец диапазона.
перебираем числа фиббоначи от первого до тех пор пока последующее число не будет
больше числа конца диапазона, считаем кол-во чисел удовлетворяющих условию чтоб
больше начала диапазона и меньше конца диапазона.
код ниже.
program diap_fibbonachi;
function stepen(a:real; n:integer):real; {функция для вычисления числа фиббоначи}
var
i:integer;
result:real;
begin
result:=1;
for i:=1 to n do
result:=result*a;
stepen:=result;
end;
var
n, k : integer; // начало конец диапазона
i : integer;
a : real; // число фиббоначи
b : integer; // кол-во цифр в заданном диапазоне
a1, a2 : real; // вспомогательные переменные
begin
writeln('введите начало диапазона.');
readln(n);
writeln('введите конец диапазона');
readln(k);
a1 := (1 + sqrt(5))/2;
a2 := (1 - sqrt(5))/2;
b := 0; i := 1;
repeat
a := (stepen(a1, i) - stepen(a2, i))/sqrt(5);
if (a >= n) and (a <=k) then b := b + 1;
i := i + 1;
until a > k;
writeln('кол-во чисел фиббоначи в диапазоне ', n, ' до ', k, ' = ',b);
readln;
end.