12 lines
482 B
Common Lisp
12 lines
482 B
Common Lisp
(defun digital-root (number &optional (base 10))
|
|
(loop for n = number then s
|
|
for ap = 1 then (1+ ap)
|
|
for s = (sum-digits n base)
|
|
when (< s base)
|
|
return (values s ap)))
|
|
|
|
(loop for (nr base) in '((627615 10) (393900588225 10) (#X14e344 16) (#36Rdg9r 36))
|
|
do (multiple-value-bind (dr ap) (digital-root nr base)
|
|
(format T "~vR (base ~a): additive persistence = ~a, digital root = ~vR~%"
|
|
base nr base ap base dr)))
|