32 lines
919 B
Plaintext
32 lines
919 B
Plaintext
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
|