27 lines
667 B
Ada
27 lines
667 B
Ada
package body Generic_Root is
|
|
|
|
procedure Compute_Root(N: Number;
|
|
Root, Persistence: out Number;
|
|
Base: Base_Type := 10) is
|
|
|
|
function Digit_Sum(N: Number) return Number is
|
|
begin
|
|
if N < Number(Base) then
|
|
return N;
|
|
else
|
|
return (N mod Number(Base)) & Digit_Sum(N / Number(Base));
|
|
end if;
|
|
end Digit_Sum;
|
|
|
|
begin
|
|
if N < Number(Base) then
|
|
Root := N;
|
|
Persistence := 0;
|
|
else
|
|
Compute_Root(Digit_Sum(N), Root, Persistence, Base);
|
|
Persistence := Persistence + 1;
|
|
end if;
|
|
end Compute_Root;
|
|
|
|
end Generic_Root;
|