|
|
Знаете ли Вы, что ... | |
...для каждой темы существует свой раздел. Изучите структуру форума. Если соответствующего раздела нет, то всегда есть раздел "Разное" :) | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
Pascal, Delphi & Builder Вопросы программирования касающиеся Pascal и Delphi |
Ответить |
|
Опции темы | Опции просмотра |
20.04.2013 19:25 | #73 |
VITUS
|
Пара красивых и быстрых алгоритмов)
Код:
//алгоритм Евклида через остатки long Nod(long a, long b) { while (a && b) if (a >= b) a %= b; else b %= a; return a | b; } // Алгоритм Евклида через разности long Nod(long a, long b) { while (a && b) if (a >= b) a -= b; else b -= a; return a | b; } Код:
int Nod( int a, int b ) { while( b^=a^=b^=a%=b ); return a; }
__________________
Почему в конце денег остается еще так много месяца? Последний раз редактировалось Vitaliy Fioktistov; 20.04.2013 в 19:28. |
|
Ответить |
22.04.2013 11:02 | #74 | |
|
Цитата:
А непонятный не разобрал.
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
|
Ответить |
22.04.2013 11:58 | #75 | |
ex-wild_John
Супермодератор |
Цитата:
Я предпочитаю запускать функцию с заранее гарантированным неравенством a>=b и не париться с проверками каждую итерацию - проще проверить условие перед вводом данных в функцию.
__________________
Герман - это не имя, это особое состояние души (Джим Анджер) |
|
|
Ответить |
22.04.2013 12:50 | #77 | |
ex-wild_John
Супермодератор |
Цитата:
Если использовать рекурсию вместо цикла, будет чуть попроще в решении. Однако, рекурсия несёт и свои минусы.
__________________
Герман - это не имя, это особое состояние души (Джим Анджер) |
|
|
Ответить |
"+" от:
|
Реклама и уведомления | |
22.04.2013 18:29 | #79 | |
|
Цитата:
Также красиво в Паскале не написать, но будет похоже. Я пишу в нотации сумм, а не xor, чтобы был "как бы" другой алгоритм ) Код:
function NOD(a,b: integer):integer; var a,b,:integer; Begin Repeat a:=a mod b; a:=a+b; b:=a-b; a:=a-b; Until b=0; NOD:=a; End;
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. Последний раз редактировалось Nadir Zaitov; 22.04.2013 в 18:33. |
|
|
Ответить |
"+" от:
|
|