Вычислить сумму всех чисел Фибоначчи, которые не превосходят заданного натурального числа М — Pascal(Паскаль)

{
         Пример 4.4. Числа Фибоначчи { F[i] } определяются по формулам
         F[0] = F[1] = 1;  F[i] = F[i-1] + F[i-2]  при i = 1, 2, 3, ...
         (каждое  очередное  число  равно  сумме  двух  предыдущих).
         Вычислить сумму всех чисел Фибоначчи, которые не превосходят
         заданного натурального числа М.

                               Система тестов
             ╔═══════╤════════╤════════════════════════════════╗
             ║ Номер │ Данные │          Результат             ║
             ║ теста │        │                                ║
             ╟───────┼────────┼────────────────────────────────╢
             ║   1   │ M = 10 │ S = 1 + 1 + 2 + 3 + 5 + 8 = 20 ║
             ╟───────┼────────┼────────────────────────────────╢
             ║   2   │ M = 1  │ S = 1 + 1 = 2                  ║
             ╚═══════╧════════╧════════════════════════════════╝
}
  Program SummaFib;
    Uses Crt;
    Var M,                    { заданное число }
        F0, F1, F2,           { три последовательных числа Фибоначчи}
        S          : Integer; { сумма чисел Фибоначчи}
  BEGIN
    ClrScr;
    Write('Введите натуральное М : ');
    ReadLn(M);

    F0:=1; F1:=1; F2:=2;
    S:=4;           {4 - сумма первых трех чисел Фибоначчи}
    Write('Числа Фибоначчи, не превосходящие ', M, ' :', F0:4, F1:4);

    While F2<=M do
      begin
        F0:=F1; F1:=F2; Write(F1 : 4);
        F2:=F0+F1; S:=S+F2;
      end;

    S:=S - F2; {вычитание из суммы последнего числа, которое превосходит М}
    WriteLn; WriteLn;
    WriteLn('О т в е т : Сумма этих чисел равна ', S); ReadLn
  END.


Leave a Comment

+ 49 = 51