Алгоритм Евклида мне кажется довольно неудобным.
А чем он неудобен? Фактически это то же самое, что раскладываем
в цепную дробь. Тогда числитель предпоследней подходящей дроби с точностью до знака (определяемого чётностью/нечётностью номера) и есть обратный.
Бинарный алгоритм - это как я догадываюсь несколько возведений в квадрат (исходя из двоичного кода числа p-2) с последующим перемножением?
Можно просто тупо вычислять степени
по модулю p. Если в этой последовательности встретится
при
, то
обратный. В противном случае придётся дойти до
, хотя и в этом случае можно минимизировать процесс за счёт пропуска вычислений некоторых степеней, используя делимость
на порядок элемента
- но это скорее для хьюмена, чем для компьютера.