procedure digital_root(atom n, integer base=10) integer root, persistence = 1 atom work = n while 1 do root = 0 while work!=0 do root += remainder(work,base) work = floor(work/base) end while if root