Professional Documents
Culture Documents
Лабораторна9
Лабораторна9
Лабораторна робота №9
«Пошук циклу послідовності Фібоначчі по модулю»
Київ – 2022
Зміст
Умова роботи ............................................................................................................................................... 2
Постановка задачі........................................................................................................................................ 3
Теоретичні відомості .................................................................................................................................. 4
Проектування алгоритму ............................................................................................................................ 5
Реалізація алгоритму програмно................................................................................................................ 6
Аналіз виконання програми ....................................................................................................................... 7
Аналіз виконання лабораторної роботи .................................................................................................... 9
Висновки ....................................................................................................................................................10
Джерела ......................................................................................................................................................11
Додаток із кодом програми ......................................................................................................................12
1
Умова роботи
Знайти цикл в числовій послідовності Фібоначчі по модулю.
2
Постановка задачі
Реалізувати алгоритм для пошуку циклу в послідовності чисел Фібоначчі по
модулю з використанням статичної бібліотеки. Порівняти результати
виконання програми за двома формулами F2%m==(F1%m+F0%m)%m та
fib()%m.
3
Теоретичні відомості
Період Пізано — це довжина періоду послідовності Фібоначчі за модулем
заданого цілого додатного числа m.
1, 0, 1, 1, 2, 3, 1, 0, 1, 1…,
Тому 𝜋(4) = 6
4
Проектування алгоритму
Послідовність Фібоначчі за модулем буде мати період, якщо поточний та
наступний елемент такі самі, як перший да другий елемент послідовності.
5
Реалізація алгоритму програмно
Програма складається з одного файлу main.cpp та має статичну бібліотеку
NumberGenerator, яка в свою чергу складається з файлів main.c та
NumberGenerator.h
6
Аналіз виконання програми
Запустимо програму з різними значеннями модуля m за формулою fib()%m:
1) m = 5
2) m = 20
3) m = 1200
4) m = -2
7
1) m = 5
2) m = 20
3) m = 1200
4) m = -2
8
Аналіз виконання лабораторної роботи
Під час виконання лабораторної роботи синтаксичні, алгоритмічні та часу
виконання помилки не виникли. Але потрібно зазначити, що даний алгоритм
працює лише для натуральних чисел більше 1, інакше виводиться “Wrong
value of m”.
9
Висновки
Був побудований алгоритм для знаходження циклу в послідовності чисел
Фібоначчі. Також була розглянута поведінка програми для різних значень
періоду. Також варто зазначити різницю між двома формулами і коли їх
краще використати:
10
Джерела
Період Пізано. (2022, March 23). In Wikipedia.
https://uk.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%96%D0%BE%D
0%B4_%D0%9F%D1%96%D0%B7%D0%B0%D0%BD%D0%BE
11
Додаток із кодом програми
//main.cpp
#include <iostream>
#include "NumberGenerator.h"
int main()
{
long long M;
cin >> M;
12
if (M <= 1)
cout << "Wrong value of m";
else
cout << find_cycle(M);
return 0;
}
//main.c
static long long F0;
static long long F1;
static long long m;
//NumberGenerator.h
13
extern "C" long long initNumberGenerator();
extern "C" long long nextNumberGenerator();
extern "C" void set_m(long long M);
14