LINUX.ORG.RU

Дискретное логарифмирование по модулю

 ,


0

1

Есть задание, найти степень, в которую надо возвести основание чтобы получить данный ответ в модулярной системе счисления.

Вот мой код: http://pastebin.com/zra1W67R

Вот теормин на который я опирался: http://e-maxx.ru/algo/discrete_log

Собственно проблема в том, что значения не сходятся, где то я допустил оплошность, но уже не могу найти

На емаксе же приведен код.
А почему у тебя такое мясо? я не увидел функцию, название которой напоминает *log* :)

actics
()
Ответ на: комментарий от actics

там не приводимый к длинным. Потому что такой логарифм можно найти только перебором всех значений

Chubakur ★★
() автор топика

http://pastebin.com/JXRQs2KM

новая версия кода, в качестве основания, модуля и ответа вставлены маленькие числа, их она считает правильно. Но если воткнуть туда большие числа(512 бит), то она завершается, так и не найдя ответ.

Chubakur ★★
() автор топика
Ответ на: комментарий от Chubakur

Теперь примерно понял, ошибка сегментации получается, если большие числа. Выхода из массива нигде нет, ошибка получается из 59 строки

 mpz_export(&(memp->value),NULL,0,sizeof(uint64_t),0,0,tmp);
]

То есть выхода нет, а export что-то портит.

Chubakur ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.