1 | |||||||||||||||||||||
Самый быстрый алгоритм Евклида вычисления НОД13.10.2011, 18:41. Показов 101326. Ответов 44
Метки нет (Все метки)
Заинтересовал вопрос о различных реализациях алгоритма Евклида для неотрицательных целых чисел. Ниже привожу алгоритмы, собственноручно написанные, исходя из теоретического материала. Каждый алгоритм можно модифицировать в ту или иную сторону.
Считается, что бинарный алгоритм работает быстрее, но мои тесты показывают, что два первых алгоритма работают быстрее бинарного. Может ли кто перепроверить на скорость на своих компиляторах, а то очень интересно и не видится никаких преимуществ бинарного алгоритма.
20
|
13.10.2011, 18:41 | |
Ответы с готовыми решениями:
44
Найти НОД для одномерного массива, используя алгоритм Евклида Найти НОД двух целых положительных чисел А и В, используя алгоритм Евклида Алгоритм Евклида для вычисления НОД Алгоритм Евклида вычисления НОД - проверить корректность вычислений |
117 / 33 / 14
Регистрация: 13.02.2015
Сообщений: 793
|
||||||
05.03.2015, 06:20 | 21 | |||||
GREGOR_812, для этого в библиотеке time.h есть функции
0
|
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
|
|
05.03.2015, 10:39 | 22 |
0
|
117 / 33 / 14
Регистрация: 13.02.2015
Сообщений: 793
|
|
05.03.2015, 10:47 | 23 |
Ну тогда алгоритм несомненно перестанет быть рекурсивным. А вообще зачем писать код с рекурсией и надеяться на компилятор, если можно сразу создать алгоритм без использования рекурсии?
0
|
28 / 28 / 5
Регистрация: 23.04.2014
Сообщений: 130
|
|
05.03.2015, 16:20 | 24 |
evgr,
Не по теме: ко мне можно на ты Спасибо, попробую сегодня вечерком протестить на разных числах
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
05.03.2015, 18:14 | 25 |
алгоритм не может быть сначала рекурсивным, а после компиляции исходников стать не рекурсивным.
Надо понимать что говорите. А говорите Вы откровенную, простите, чушь. Итерация - частный случай рекурсии, если что. Оптимизация рекурсии явление не новое и если компилятор этого не умеет, то стоит задуматься о целесообразности его использования.
0
|
117 / 33 / 14
Регистрация: 13.02.2015
Сообщений: 793
|
|
06.03.2015, 08:45 | 26 |
castorsky, а ещё было бы неплохо понимать, что вы пишите. А пишите вы, судя по всему, как Бог на душу положит. "Ааа, зачем мне вообще нужна оптимизация? Компилятор же всё сам за меня сделает!" - думаете вы. А потом, что дизассемблируете ваш экзешник и смотрите, действительно ли компилятор всё оптимизировал? Даже если так, оно вам надо? Не проще сразу писать нормальный код, чем приобретать себе лишнюю головную боль?
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
06.03.2015, 10:36 | 27 |
я все прекрасно понимаю, и Вам пытаюсь донести. Вот Вам рекурсивный алгоритм
реализуйте на своё усмотрение, или как рекурсию, или как частный случай рекурсии - итерацию. Как Вам будет угодно. Я думаю что оптимизация - это не писать функции простыни больше 20-25 строк форматированного кода. В таком случае просто не влезет столько данных чтобы компилятор не справился с оптимизацией рекурсии в цикл. Боюсь что Вы только на пороге к понимаю этих слов.
0
|
117 / 33 / 14
Регистрация: 13.02.2015
Сообщений: 793
|
|
06.03.2015, 11:09 | 28 |
Да вы пытаетесь меня втянуть в какую-то специальную олимпиаду! Смотрите, как бы вас кто-нибудь также не развёл на слабо и не заставил сделать за него что-нибудь
Давайте-ка свернём эту дискуссию, если вы не против?
0
|
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
|
|
06.03.2015, 11:25 | 29 |
Не по теме: Простейшие основы матана для Вас оленьпиада? Тут надо курить матчасть. Я указал Вам на ошибку, как человек рациональный Вы долны поразмыслить на сказанным. ЧТД. Добавлено через 1 минуту evgr, под "реализуйте на своё усмотрение" я понимаю не "реализуйте" а "можете реализовать как Вам вздумается", т.е. это не попытка взять на слабо, а просто пример.
0
|
Модератор
12459 / 7483 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
06.03.2015, 11:44 | 30 |
evgr, очень хорошее предложение!
И вообще, друзья, старайтесь поменьше эмоций проявлять, и с оценками собеседников поаккуратнее...
1
|
GREGOR_812
|
06.03.2015, 12:44
#31
|
Не по теме: А по поводу оптимизации рекурсии почитать можно что-нибудь? Авторы, названия книг интересуют
0
|
Вездепух
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
|
|
22.04.2016, 03:28 | 34 |
Такой вариант, во-первых, некорректен, ибо содержит неупорядоченные (unsequenced) множественные модификации одной и той же переменной. Поведение этого кода не определено.
Во-вторых, такой вариант построен на предположении, что цепочка xor является наиболее эффективным способом обмена двух целочисленных переменных, что также не верно.
0
|
22.04.2016, 12:50 | 35 | |||||
Программка медленнее, но зато алгоритм другой. Все зависит от кол-ва простых чисел в векторе.
0
|
Модератор
12459 / 7483 / 1754
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
22.04.2016, 15:17 | 36 |
0
|
Вездепух
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
|
|
22.04.2016, 20:42 | 37 |
О, да, разумеется, зависит! Программа просто тупо вылетает за размер вектора и падает, если ни одно из чисел в векторе не делит входное число. Как это должно вообще работать в финальном варианте? Вы предлагаете заранее заполнить вектор простыми числами вплоть до корня из
UINT_MAX ?
0
|
22.04.2016, 21:00 | 38 |
TheCalligrapher, главное - продемонстрировать другой подход к решению задачи!
код писался ради идеи, а не для рабочего пользования. а простые числа можно, например, запихнуть в файл. Своеобразная бд простых чисел получится.
0
|
Модератор
8909 / 6678 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
|
|
22.04.2016, 22:01 | 39 |
и что это быстро?
я тут вижу тупой перебор а если числа будут хотя бы 64 бита, я уж не говорю о большем размере, какой будет размер файла?
0
|
0 / 0 / 0
Регистрация: 29.09.2016
Сообщений: 8
|
||||||
08.12.2016, 19:18 | 40 | |||||
0
|
08.12.2016, 19:18 | |
08.12.2016, 19:18 | |
Помогаю со студенческими работами здесь
40
Построить алгоритм Маркова, который ищет НОД (Алгоритм Евклида) НОД . Рекурсивный алгоритм Евклида Алгоритм Евклида для нахождения НОД НОД двух чисел алгоритм Евклида Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |