Вычислите дискретный логарифм

Оператор по модулю является % (знак процента). Для тестирования на четность или обычно делают по модулю для питания 2, можно также использовать & (и оператор) как isEven =! (& 1).

11
задан Salvador Dali 18 April 2015 в 20:38
поделиться

3 ответа

Это совсем не простая проблема. Это называется вычислением дискретного логарифма , и это операция, обратная модульному возведению в степень .

Эффективного алгоритма не известно. То есть, если N обозначает количество бит в m, все известные алгоритмы выполняются за O (2 ^ (N ^ C)), где C> 0.

15
ответ дан 3 December 2019 в 01:00
поделиться

From the % operator I'm assuming that you are working with integers.

You are trying to solve the Discrete Logarithm problem. A reasonable algorithm is Baby step, giant step, although there are many others, none of which are particularly fast.

The difficulty of finding a fast solution to the discrete logarithm problem is a fundamental part of some popular cryptographic algorithms, so if you find a better solution than any of those on Wikipedia please let me know!

28
ответ дан 3 December 2019 в 01:00
поделиться

как уже говорилось, общая проблема сложна. однако практический способ найти e тогда и только тогда, когда вы знаете, что e будет маленьким (как в вашем примере), - это просто попробовать каждое e из 1.

btw e == 3 - первое решение вашего примера , и вы, очевидно, можете найти это за 3 шага, сравните с решением недискретной версии и наивным поиском целочисленных решений, т.е.

0
ответ дан 3 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: