SRC: НОД (алгоритм Евклида)
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 16.09.02 06:25
Оценка:
Наибольший общий делитель двух чисел (может, пригодится студентам) Оценки не ставить ! Ибо не за что...



    int a = 18;
    int b = 45;
    int c;

    while( b != 0) { // сам алгоритм
    
      c = a % b;
      a = b;
      b = c;
    }

printf("Результат: %i\n",a);
Re: SRC: НОД (алгоритм Евклида)
От: WolfHound  
Дата: 16.09.02 19:18
Оценка:
Здравствуйте Flamer, Вы писали:

Супер короче еще не видел
ЗЫ оценки сам просил не ставить
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: SRC: НОД (алгоритм Евклида)
От: Кодт Россия  
Дата: 18.09.02 13:55
Оценка:
Здравствуйте Flamer, Вы писали:

F>Наибольший общий делитель двух чисел (может, пригодится студентам) Оценки не ставить ! Ибо не за что...


Добавить только проверки на ноль и отрицательность...
int GCD(int a, int b)
{
  if(a < 0) a = -a;
  if(b < 0) b = -b;
  int c;
  while(b)
  {
    c = a % b; a = b; b = c;
  }
  return a;
}

А также посмотреть на АлгоЛист
Перекуём баги на фичи!
Re: SRC: НОД (алгоритм Евклида)
От: SergH Россия  
Дата: 19.09.02 11:52
Оценка:
Здравствуйте Flamer, Вы писали:

[skip]

1. За этот форум — большое спасибо. Честно.
2. Зачем же так подрывать его суть? Или у тебя принцип — "ни дня без постинга"? Лучше меньше, да в тему.. ИМХО.
Делай что должно, и будь что будет
Re[2]: SRC: НОД (алгоритм Евклида)
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 19.09.02 12:01
Оценка:
Здравствуйте SergH, Вы писали:

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


SH>[skip]


SH>1. За этот форум — большое спасибо. Честно.

SH>2. Зачем же так подрывать его суть? Или у тебя принцип — "ни дня без постинга"? Лучше меньше, да в тему.. ИМХО.

Так не в том дело, что "ни для без постинга" — дело в другом. Вам какая-то одна тема не интересна, другому — другая. Я не стремлюсь угодить всем, а просто хочу, чтобы в форуме было как можно больше исходников, интересных нарезок и пр. Да, конечно, главное условие — это то, чтобы кому-то пригодилось и было грамотно написано. Так ведь "кому-то пригодится" — согласитесь, постулат довольно условный.

З.Ы. А критика — эт хорошо

З.З.Ы. Кстати, а в какую тему будет интересно? Пишите новый пост и в нем взывайте к общественности... Или, если не хотите в форум, присылайте мне на flame@rsdn.ru. С интересной задачей и жизнь веселее...
Re[3]: SRC: НОД (алгоритм Евклида)
От: SergH Россия  
Дата: 19.09.02 12:09
Оценка:
Здравствуйте Flamer, Вы писали:

F>З.З.Ы. Кстати, а в какую тему будет интересно? Пишите новый пост и в нем взывайте к общественности... Или, если не хотите в форум, присылайте мне на flame@rsdn.ru. С интересной задачей и жизнь веселее...


Не, я не имею конкретной темы. Просто, как мне кажется, реализация алгоритма евклида никому не пригодится.. Не потому, что алгоритм не нужен, а потому что насколько я помню, он формулируется именно так, как у тебя реализован. Т.е., если бы ты реализовал его двумя ассемблерными командами, это было бы круто. А так — не очень...
Делай что должно, и будь что будет
Re[4]: SRC: НОД (алгоритм Евклида)
От: Lexey Россия  
Дата: 19.09.02 12:53
Оценка:
Здравствуйте SergH, Вы писали:

F>>З.З.Ы. Кстати, а в какую тему будет интересно? Пишите новый пост и в нем взывайте к общественности... Или, если не хотите в форум, присылайте мне на flame@rsdn.ru. С интересной задачей и жизнь веселее...


SH>Не, я не имею конкретной темы. Просто, как мне кажется, реализация алгоритма евклида никому не пригодится.. Не потому, что алгоритм не нужен, а потому что насколько я помню, он формулируется именно так, как у тебя реализован. Т.е., если бы ты реализовал его двумя ассемблерными командами, это было бы круто. А так — не очень...


Формулироваться он может по разному. Да и помимо собственно алгоритма Евклида бывает еще расширенный алгоритм Евклида и некоторорые модификации алгоритма Евклида, которые его ускоряют.
Так что желающим есть поле для деятельности.
"Будь достоин победы" (c) 8th Wizard's rule.
Re: SRC: НОД (алгоритм Евклида)
От: Vampire Россия  
Дата: 25.09.02 21:35
Оценка:
Здравствуйте Flamer, Вы писали:

F>Наибольший общий делитель двух чисел (может, пригодится студентам) Оценки не ставить ! Ибо не за что...


Почему не ставить
Я уже и забыл что такое НОД, а иногда нужен.

Копался в своих библиотечках под DOS. Студенческие нароботки от нечего делать.
Нашел у себя такую функцию:



long my_matem::min(long a, long b)        {    return (a<b) ? a : b;}

long my_matem::NOD(long a, long b)
{
    long k_iter;
    
    
    k_iter = (int)min(5.0 * log(a), 3.0/2.0 * (log10(a)/log10(2)));
    
    return k_iter;
}


И вот думаю что это такое
Самое интересное, что неработающее я в свои библиотеки не сувал.

Может кто знает, а тож неделю спать не буду
Если долго мучиться что нибудь получится
Re[2]: SRC: НОД (алгоритм Евклида)
От: Кодт Россия  
Дата: 26.09.02 07:26
Оценка:
Здравствуйте Vampire, Вы писали:

V>Копался в своих библиотечках под DOS. Студенческие нароботки от нечего делать.

V>Нашел у себя такую функцию:

V>long my_matem::min(long a, long b)        {    return (a<b) ? a : b;}

V>long my_matem::NOD(long a, long b)
V>{
V>    long k_iter;
V>    k_iter = (int)min(5.0 * log(a), 3.0/2.0 * (log10(a)/log10(2)));
V>    return k_iter;
V>}

V>И вот думаю что это такое
min(
  5 ln a,
  1.5 (ln a / ln 10) / (ln 2 / ln 10)
)
=

min(
  (ln a) * 5,
  (ln a) * 1.5 / ln 2
)
=

(ln a) * (  (a > 1) ?  5  :  1.5/(ln 2)  )

Интересно, что параметр b в вычислениях не участвует...

Функция оценивает количество итераций чего-то?

V>Самое интересное, что неработающее я в свои библиотеки не сувал.

А работающее, но бессмысленное?
Перекуём баги на фичи!
Re[2]: SRC: НОД (алгоритм Евклида)
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 08.10.02 08:35
Оценка:
WH>Супер короче еще не видел
Из книги Роберта Седжвика:
int gcd(int m, int n)
{
  if (n == 0) return m;
  return gcd(n, m % n);
}
Алексей Кирдин
Re[3]: SRC: НОД (алгоритм Евклида)
От: Anton V. Kolotaev  
Дата: 10.10.02 06:39
Оценка:
Здравствуйте Kaa

int gcd(int m, int n)
{  return n ? gcd(n,m%n) : m; }


то же самое, но еще короче.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.