RosettaCodeData/Task/Modular-exponentiation/Common-Lisp/modular-exponentiation-3.lisp
Ingy döt Net db842d013d A-M baby
2013-04-10 21:29:02 -07:00

6 lines
192 B
Common Lisp

(defun mod-expt (a n m)
(loop with c = 1 while (plusp n) do
(if (oddp n) (setf c (mod (* a c) m)))
(setf n (ash n -1))
(setf a (mod (* a a) m))
finally (return c)))