How to check if a number is a happy number in Pascal

1 Answer

0 votes
program HappyNumberCheck;

// 8^2 + 2^2 = 68
// 6^2 + 8^2 = 100
// 1^2 + 0^2 + 0^2 = 1 = happy number

function SumOfSquares(n: Integer): Integer;
var
  digit: Integer;
  sum: Integer;
begin
  sum := 0;
  while n > 0 do
  begin
    digit := n mod 10;
    sum := sum + digit * digit;
    n := n div 10;
  end;
  SumOfSquares := sum;
end;

function IsHappyNumber(n: Integer): Boolean;
var
  seen: array[1..1000] of Boolean;
  i: Integer;
begin
  for i := 1 to 1000 do
    seen[i] := False;

  while (n <> 1) and (not seen[n]) do
  begin
    seen[n] := True;
    n := SumOfSquares(n);
    if n > 1000 then
      n := n mod 1000;  { Prevent array overflow }
  end;

  IsHappyNumber := (n = 1);
end;

var
  num: Integer;

begin
  num := 82;

  if IsHappyNumber(num) then
    WriteLn(num, ' is a happy number.')
  else
    WriteLn(num, ' is NOT a happy number.');

  ReadLn;
end.
 
 
 
 
(*
run:
 
82 is a happy number.
 
*)

 



answered Feb 23 by avibootz
edited Feb 24 by avibootz
...