Złożoność przyjmowania mod


23

To wydaje się pytaniem, które powinno mieć łatwą odpowiedź, ale nie mam ostatecznego:

na,pamodp

Jedynie podzielenie przez będzie wymagać czasu , gdzie jest złożoność mnożenia. Ale czy można wykonać nieco szybciej?ap O(M(n))M(n)mod


1
Może głupie pytanie, ale można przekonwertować być napisane w podstawowej a następnie spojrzeć na LSB? ap
Pål GD

2
Mógłbyś, ale to wydaje się dodatkową pracą i prawdopodobnie wymagałoby podziału.
Suresh

Odpowiedzi:


12

Shoup (Rozdział 3.3.5, Twierdzenie 3.3, s. 62) wyznacza granicę dla obliczenia reszty czasie gdzie oraz .rO(nlogq)a=qp+rloga=n

Sądzę, że jeśli zarówno i są mniej więcej liczbami bitowymi, to (a zatem ) powinno być raczej małe, dając .panqlogqO(n)

Jeśli jest liczbą bitową, a jest względnie małe, wówczas mnożenie powinno być szybsze.anp

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.