Complexidade de tomar mod

23

Parece uma pergunta que deve ter uma resposta fácil, mas não tenho uma definitiva:

Se eu tiver dois números de bits , qual é a complexidade de calcular ?na,pamodp

Simplesmente dividir a por p levaria tempo O(M(n)) onde M(n) é a complexidade da multiplicação. Mas o \ bmod pode modser executado um pouco mais rápido?

Suresh
fonte
1
Talvez seja uma pergunta idiota, mas você pode converter a para ser escrito na base p olhar para o LSB?
GD
2
Você poderia, mas isso parece um trabalho extra e provavelmente exigiria divisão.
Suresh

Respostas:

12

Shoup (Secção 3.3.5, o Teorema de 3,3, p. 62) dá um limite para calcular o resíduo r em tempo O(nlogq) , onde a=qp+r e loga=n .

Eu acho que se p e a são aproximadamente n números de bits, então q (e, portanto, logq ) deve ser bastante pequeno, fornecendo O(n) .

Se a é um número de n bits p é relativamente pequeno, a abordagem de multiplicação deve ser mais rápida.

Luke Mathieson
fonte