Теорема для любых x, gcd (n, m), где n < fib (x) рекурсивно называется равным или меньше x раз.
Примечание: FIB (х) Фибоначчи (х), где FIB (х) = FIB (х-1) + FIB (х-2)
доказательства
Основа
< каждого п = FIB (1), НОД (п, м) НОД (1, м) только один раз рекурсивным
Индуктивный шаг
Предположим теорема выполняются для каждого числа меньше, чем х, что означает:
calls(gcd(n, m)) <= x for every n <= fib(x)
рассмотрим п где п < = FIB (х + 1)
если т> Фибо (х)
calls(gcd(n, m))
= calls(gcd(m, (n-m))) + 1
= calls(gcd(n-m, m%(n-m))) + 2 because n - m <= fib(x-1)
<= x - 1 + 2
= x + 1
< если т = FIB (х)
calls(gcd(n, m))
= calls(gcd(m, (n%m))) + 1 because m <= fib(x)
<= x + 1
Итак, теорема справедлива и для x + 1, как математическая индукция, теорема верна для любого x.
Заключение
НОД (п, т) является Θ (обратный FIB), который является Θ (LOGN)