Найти все элементы начального отрезка из n членов последовательности Фибоначчи, являющиеся квадратами - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Для заданного натурального n(n>=3) найти все элементы начального отрезка из n членов последовательности Фибоначчи, являющиеся квадратами натуральных чисел.

Решение задачи: «Найти все элементы начального отрезка из n членов последовательности Фибоначчи, являющиеся квадратами»

textual
Листинг программы
{$mode objfpc}
uses gmp;
 
var sf, sq: mpz_t; // uint64;
    f: array [0..2] of mpz_t; // uint64;
    i, n: longint;
 
begin
  mpz_init_set_si(f[0], 1);
  mpz_init_set_si(f[1], 1);
  // f[0] := 1; f[1] := 1;
  write('n = '); readln(n);
  for i := 2 to n - 1 do
    begin
      mpz_add(f[i mod 3], f[(i - 2) mod 3], f[(i - 1) mod 3]);
      // f[i mod 3] := f[(i - 2) mod 3] + f[(i - 1) mod 3];
      mpz_sqrt(sf, f[i mod 3]);
      // sf := round(sqrt(f[i mod 3]));
      mp_printf('F(%d) = %Zd', [i + 1, @f[i mod 3]]);
      // write('F(', i + 1, ') = ', f[i mod 3]);
      mpz_mul(sq, sf, sf);
      if mpz_cmp(sq, f[i mod 3]) = 0
      // if sf * sf = f[i mod 3]
        then mp_printf(' = %Zd^2', [@sf]); // writeln(' = ', sf, '^2')
        // else
      writeln
    end;
  readln
end.

Объяснение кода листинга программы

  1. Объявлены переменные: — sf, sq: mpz_t; // uint64; — f: array [0..2] of mpz_t; // uint64; — i, n: longint;
  2. Инициализированы первые два элемента последовательности Фибоначчи: — mpz_init_set_si(f[0], 1); — mpz_init_set_si(f[1], 1);
  3. Запрошен у пользователя ввод числа n: — write('n = '); readln(n);
  4. В цикле вычисляются квадраты элементов последовательности Фибоначчи: — for i := 2 to n — 1 do — begin — mpz_add(f[i mod 3], f[(i — 2) mod 3], f[(i — 1) mod 3]); — mpz_sqrt(sf, f[i mod 3]); — mp_printf('F(%d) = %Zd', [i + 1, @f[i mod 3]]); — mpz_mul(sq, sf, sf); — if mpz_cmp(sq, f[i mod 3]) = 0 — then mp_printf(' = %Zd^2', [@sf]); — else mp_printf(' = %Zd^2', [@f[i mod 3]]); — end;
  5. Программа ожидает ввода данных и выводит результат: — readln

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы