Главная / Программирование / Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма Евклида вычисления наибольшего общего делителя двух целых чисел: int gcd(int m, int n) { // дано: целые числа m, n, хотя бы одно отлично от нуля // надо: вычислить НОД пары (m,

Оценить сверху время работы (т.е. количество выполнений тела цикла) алгоритма Евклида вычисления наибольшего общего делителя двух целых чисел: int gcd(int m, int n) { // дано: целые числа m, n, хотя бы одно отлично от нуля // надо: вычислить НОД пары (m, n) int a = m, b = n; while (b != 0) { // Invariant: НОД(a, b) == НОД(m, n) int r := a % b; // находим остаток от деления a на b a = b; b = r; // заменяем пару (a, b) на (b, r) } return a; // ответ = a }

вопрос

Правильный ответ:

Время работы не больше, чем C*log2max(m, n), где C - некоторая константа (т.е. время пропорционально количеству цифр в двоичной или десятичной записи максимального из чисел m, n).
Время работы не больше, чем C*r, где C - некоторая константа, r - квадратный корень из max(m, n) (т.е. время пропорционально квадратному корню из максимального числа).
Время работы не больше, чем C*max(m, n), где C - некоторая константа (т.е. время пропорционально максимальному из чисел m, n).
Сложность вопроса
87
Сложность курса: Программирование
84
Оценить вопрос
Очень сложно
Сложно
Средне
Легко
Очень легко
Комментарии:
Аноним
Большое спасибо за помощь по интуит.
21 июн 2017
Аноним
спасибо за ответ
12 фев 2016
Оставить комментарий
Другие ответы на вопросы из темы программирование интуит.