Вот составил прогу которая находит столько чисел фибоначчи сколько я скажу:
var
a,b,c,i,n: integer;
begin
write('n = ');
readln(n);
a := 0;
b := 1;
write(a,' ');
write(b,' ');
for i:=3 to n do begin
write(a+b,' ');
c:= b;
b:= a + b;
a:= c;
end;
readln
end.
Другие языки программирования и технологии
Помогите!!! Надо сделать прогу которая сможет найти 30 первых чисел фибоначчи которые кратны 3!!!
var i, n, k: byte; {хватает только на 23 числа, 30 - это перебор}
a: array [1..100] of int64;
begin
write ('введите число n =');
readln (n);
a[1]:=1;
a[2]:=1;
i:=2;
k:=0;
repeat
inc(i);
a[i]:=a[i-2]+a[i-1];
if (a[i] mod 3 = 0) then
begin
writeln (a[i]:25);
inc(k);
end;
until (k >= n);
end.
a: array [1..100] of int64;
begin
write ('введите число n =');
readln (n);
a[1]:=1;
a[2]:=1;
i:=2;
k:=0;
repeat
inc(i);
a[i]:=a[i-2]+a[i-1];
if (a[i] mod 3 = 0) then
begin
writeln (a[i]:25);
inc(k);
end;
until (k >= n);
end.
Не всё так просто, как может показаться. Тридцатое кратное трём число (121-е) равно 5358359254990966640871840 (5,35835925499097 × 10²⁴). Проще говоря представить его целым так запросто не выйдет. Следовательно задачу нужно решать иначе, сначала найти индексы чисел (5, 9, 13, … 113, 117, 121), потом вычислить сами числа по формуле Бине.
function FibNum(f, n: real): real;
begin
// вывод числа Фибоначчи, рассчитанного по формуле Бине:
FibNum:= 1 / Sqrt(5) * (Exp(f * n) - Cos(PI * n) / Exp(f * n));
end;
function FibNumRem(n, m: integer): integer;
var
i, a, b, c: integer;
begin
// поиск остатка от деления n-го числа Фибоначчи на m
a:= 0; b:= 1; Dec(n);
for i:= 1 to n do begin c:= a; a:= b; b:= (c + a) mod m end;
FibNumRem:= b;
end;
var
f: real;
cnt, idx: integer;
begin
// расчет константы формулы Бине:
f:= Ln((1 + Sqrt(5)) / 2);
cnt:= 0; idx:= 1;
repeat
if FibNumRem(idx, 3) = 0 then begin
Inc(cnt);
writeln(cnt:2,' : Fib(', idx + 1, ') = ', FibNum(f, idx))
end;
Inc(idx)
until cnt = 30
end.
function FibNum(f, n: real): real;
begin
// вывод числа Фибоначчи, рассчитанного по формуле Бине:
FibNum:= 1 / Sqrt(5) * (Exp(f * n) - Cos(PI * n) / Exp(f * n));
end;
function FibNumRem(n, m: integer): integer;
var
i, a, b, c: integer;
begin
// поиск остатка от деления n-го числа Фибоначчи на m
a:= 0; b:= 1; Dec(n);
for i:= 1 to n do begin c:= a; a:= b; b:= (c + a) mod m end;
FibNumRem:= b;
end;
var
f: real;
cnt, idx: integer;
begin
// расчет константы формулы Бине:
f:= Ln((1 + Sqrt(5)) / 2);
cnt:= 0; idx:= 1;
repeat
if FibNumRem(idx, 3) = 0 then begin
Inc(cnt);
writeln(cnt:2,' : Fib(', idx + 1, ') = ', FibNum(f, idx))
end;
Inc(idx)
until cnt = 30
end.
Виталий Заводовский
Без повтора циклов https://ideone.com/NjrlJr
Aleksandr Gulyaeff
Спасибо, очень помогли! И понятно обьяснили
Похожие вопросы
- Числа Фибоначчи.
- Найдите наибольшее четырехзначное число, которое при делении на любое однозначное число, кроме 1,2и3, дает в остатке 3
- Найти число Фибоначчи, ближайшее к заданному натуральному числу N. (программирование в языке Си)
- Недавно начал изучать программирование с паскаля.Помогите сделать программу которой я ввел бы 3 числа или больше а она
- Помогите разобрать код программы чисел Фибоначчи на Delphi
- народ помогите пожалуйста) надо сделать прогу на pascal)
- Мне сказали сделать калькулятор которые переводит двоичную числу на 16 через visual basic кто знает пожалуйста пишите к
- Есть ли такая прога которая говорит пользователю что комп готов к работе?
- в 1с есть файловая информационная база, необходимо сделать батник, который делает выгрузку базы *.dt в гугле нашел след
- Нужно сделать прогу в Паскале, чтобы вводилось число и если есть повторяющиеся цифры, то ответ "Да", иначе"Нет"