sum_digits = proc (n, base: int) returns (int) sum: int := 0 while n > 0 do sum := sum + n // base n := n / base end return (sum) end sum_digits digital_root = proc (n, base: int) returns (int, int) persistence: int := 0 while n >= base do persistence := persistence + 1 n := sum_digits(n, base) end return (n, persistence) end digital_root start_up = proc () po: stream := stream$primary_output() tests: array[int] := array[int]$[627615, 39390, 588225, 393900588225] for test: int in array[int]$elements(tests) do root, persistence: int := digital_root(test, 10) stream$putl(po, int$unparse(test) || " has additive persistence " || int$unparse(persistence) || " and digital root of " || int$unparse(root)) end end start_up