Complexité de la prise de mod


23

Cela semble être une question qui devrait avoir une réponse facile, mais je n'en ai pas de définitive:

na,pamodp

Diviser simplement a par p prendrait le temps O(M(n))M(n) est la complexité de la multiplication. Mais mod peut- il être exécuté un peu plus rapidement?


1
Peut-être une question stupide, mais pouvez-vous convertir a à écrire en base p et ensuite regarder le LSB?
Pål GD

2
Vous pourriez, mais cela semble être un travail supplémentaire et nécessiterait probablement une division.
Suresh

Réponses:


12

Shoup (Section 3.3.5, Théorème 3.3, p. 62) donne une borne pour calculer le résidu r dans le temps O(nlogq)a=qp+r et loga=n .

Je suppose que si p et a sont tous deux à peu près n nombres de bits, alors q (et donc logq ) devrait être plutôt petit, donnant O(n) .

Si a est un nombre à n bits et p est relativement petit, alors l'approche de multiplication devrait être plus rapide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.