05 March, 2009

Нахождение наименьшего общего делителя (НОД)

Нашел несколько вариантов алгоритма нахождения НОД, реализовал их на С++ и решил сравнить по скорости. Вопреки моему ожиданию, а я поставил на бинарный алгоритм Евклида, победил обычный алгоритм Евклида (разница примерно в 1.3 раза). Его тут и привожу:
size_t NOD(size_t a, size_t b)
{
    while (a != 0 && b != 0)
        if (a >= b)
            a = a % b;
        else
            b = b % a;
    return a + b;
}

No comments: