Сложность прохождения мода

23

Это похоже на вопрос, который должен иметь простой ответ, но у меня нет однозначного ответа:

Если у меня есть два битных числа , какова сложность вычисления ?na,pamodp

Простое деление a на p заняло бы время O(M(n)) где M(n) - сложность умножения. Но можно ли выполнить mod немного быстрее?

Суреш
источник
1
Возможно глупый вопрос, но можете ли вы преобразовать a для записи в базу p а затем посмотреть LSB?
Пол GD
2
Вы могли бы, но это кажется дополнительной работой, и вероятно потребовало бы разделения.
Суреш

Ответы:

12

Шуп (раздел 3.3.5, теорема 3.3, стр. 62) дает оценку для вычисления вычета r за время O(nlogq) где a=qp+r и loga=n .

Я предполагаю, что если p и a оба примерно n битных чисел, то q (и, следовательно, logq ) должно быть довольно маленьким, давая O(n) .

Если a является n битным числом, а p относительно мало, то подход умножения должен быть быстрее.

Люк Мэтисон
источник