Happy numbers: Difference between revisions

Added Algol W
mNo edit summary
(Added Algol W)
Line 465:
28
31</pre>
 
=={{header|ALGOL W}}==
<syntaxhighlight lang="algolw">
begin % find some happy numbers: numbers whose digit-square sums become 1 %
% when repeatedly applied %
% returns true if n is happy, false otherwise %
logical procedure isHappy ( integer value n ) ;
begin
% the largest digit-square sun for a 9 digit number is 729: 81 * 9 %
logical array seen ( 0 :: 729 );
integer v, dSum;
for i := 0 until 729 do seen( i ) := false;
v := abs n;
while begin
dSum := 0;
while v not = 0 do begin
integer d;
d := v rem 10;
v := v div 10;
dSum := dSum + ( d * d )
end while_v_ne_0 ;
dSum not = 1 and not seen( dSum )
end
do begin
seen( dSum ) := true;
v := dSum
end while_not_happy_and_not_looping ;
dSum = 1
end isHappy ;
begin % find the first 8 happy numbers %
integer n, hCount;
hCount := 0;
n := 1;
while hCount < 8 do begin
if isHappy( n ) then begin
writeon( i_w := 1, s_w := 0, " ", n );
hCount := hCount + 1
end if_isHappy__n ;
n := n + 1
end while_hCount_lt_10
end
end.
</syntaxhighlight>
{{out}}
<pre>
1 7 10 13 19 23 28 31
</pre>
 
=={{header|ALGOL W}}==
3,038

edits