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(nlog⁡q)a=q⋅p+rlog⁡a=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 .panqlog⁡qO(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.