Временная сложность алгоритма Евклида

У меня была такая же проблема с использованием LineageOS из здесь

( Источник )

Я запустил обновление до самой последней версии из Утилита ODROID и изменила «HDMI Landscape / HDMI Portrait 90 + 270» на прямые 0, 90, 180, 270. Для изменения потребовалась перезагрузка.

( Получено )

ODROID XU4 on an ELO 32" Touchscreen

85
задан Mohamed Ennahdi El Idrissi 11 March 2014 в 01:57
поделиться

1 ответ

Вот анализ в книге Структуры данных и Анализ Алгоритма в C [1 121] Mark Allen Weiss (второй выпуск, 2.4.4):

работы алгоритма Euclid постоянно вычислительными остатками до 0 достигнут. Последний ненулевой остаток является ответом.

Вот код:

unsigned int Gcd(unsigned int M, unsigned int N)
{

    unsigned int Rem;
    while (N > 0) {
        Rem = M % N;
        M = N;
        N = Rem;
    }
    Return M;
}

Вот ТЕОРЕМА , что мы собираемся использовать:

, Если М N, затем модификация М N < M/2.

ДОКАЗАТЕЛЬСТВО:

существует два случая. Если N < = M/2, затем так как остаток меньше, чем N, теорема верна для этого случая. Другой случай является N> M/2. Но затем N входит в M однажды с остатком M - N < M/2, доказывая теорему.

Так, мы можем сделать следующий вывод:

Variables    M      N      Rem

initial      M      N      M%N

1 iteration  N     M%N    N%(M%N)

2 iterations M%N  N%(M%N) (M%N)%(N%(M%N)) < (M%N)/2

Так, после двух повторений, остаток является самое большее половиной своего исходного значения. Это показало бы, что количество повторений самое большее 2logN = O(logN).

Примечание, что, алгоритм вычисляет GCD (M, N), принимая M> = N. (Если N> M, первое повторение цикла подкачивает их.)

0
ответ дан 24 November 2019 в 08:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: