Iterated digits squaring: Difference between revisions

Ada version
(→‎{{header|C sharp}}: Added BigInteger version.)
(Ada version)
Line 28:
* [[Digital root/Multiplicative digital root]]
<br><br>
 
=={{header|Ada}}==
<lang Ada>with Ada.Text_IO;
 
procedure Digits_Squaring is
 
function Is_89 (Number : in Positive) return Boolean
is
Squares : constant array (0 .. 9) of Natural :=
(0, 1, 4, 9, 16, 25, 36, 49, 64, 81);
 
Sum : Natural := Number;
Acc : Natural;
begin
loop
Acc := Sum;
Sum := 0;
while Acc > 0 loop
Sum := Sum + Squares (Acc mod 10);
Acc := Acc / 10;
end loop;
 
if Sum = 89 then return True; end if;
if Sum = 1 then return False; end if;
end loop;
end Is_89;
 
use Ada.Text_IO;
Count : Natural := 0;
begin
for A in 1 .. 99_999_999 loop
if Is_89 (A) then
Count := Count + 1;
end if;
 
if A = 999_999 then
Put_Line ("In range 1 .. 999_999: " & Count'Image);
end if;
 
end loop;
Put_Line ("In range 1 .. 99_999_999: " & Count'Image);
end Digits_Squaring;</lang>
 
{{out}}
<pre>In range 1 .. 999_999: 856929
In range 1 .. 99_999_999: 85744333</pre>
 
=={{header|ALGOL 68}}==
210

edits