Re[2]: Количество делений при нахождении НОД (m,n)
От: infused  
Дата: 01.12.03 11:35
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, infused, Вы писали:


I>> Нужно оценить количество делений при нахождении НОД (m,n). Если кто знает формулу подскажите плз...


I>>Предпологаю что это порядка log2(max(m,n))... ???

I>>Зараннее спасибо.

К>При желании — можно выйти в O(1), точнее — в ноль

К>
К>int gcd(int a, int b)
К>{
К>  a = abs(a);
К>  b = abs(b);

К>  while(a > 1 && b > 1) // можно while(a != 0 && b != 0) -- но это неоптимально
К>    if(a > b)
К>      a -= b;
К>    else
К>      b -= a;

К>  if(a == 1 || b == 1)
К>    return 1;
К>  else
К>    return a + b; // одно из них == 0
К>}
К>


Да алгоритм на разности мне знаком.... Вопрос в количестве операций (макс. количестве)!
Сколько их при делении... и сколько их(операций) например в данном случае при вычитании...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.