langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
61
Task/Happy-numbers/Pascal/happy-numbers.pascal
Normal file
61
Task/Happy-numbers/Pascal/happy-numbers.pascal
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
Program HappyNumbers (output);
|
||||
|
||||
uses
|
||||
Math;
|
||||
|
||||
function find(n: integer; cache: array of integer): boolean;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
find := false;
|
||||
for i := low(cache) to high(cache) do
|
||||
if cache[i] = n then
|
||||
find := true;
|
||||
end;
|
||||
|
||||
function is_happy(n: integer): boolean;
|
||||
var
|
||||
cache: array of integer;
|
||||
sum: integer;
|
||||
begin
|
||||
setlength(cache, 1);
|
||||
repeat
|
||||
sum := 0;
|
||||
while n > 0 do
|
||||
begin
|
||||
sum := sum + (n mod 10)**2;
|
||||
n := n div 10;
|
||||
end;
|
||||
if sum = 1 then
|
||||
begin
|
||||
is_happy := true;
|
||||
break;
|
||||
end;
|
||||
if find(sum, cache) then
|
||||
begin
|
||||
is_happy := false;
|
||||
break;
|
||||
end;
|
||||
n := sum;
|
||||
cache[high(cache)]:= sum;
|
||||
setlength(cache, length(cache)+1);
|
||||
until false;
|
||||
end;
|
||||
|
||||
var
|
||||
n, count: integer;
|
||||
|
||||
begin
|
||||
n := 1;
|
||||
count := 0;
|
||||
while count < 8 do
|
||||
begin
|
||||
if is_happy(n) then
|
||||
begin
|
||||
inc(count);
|
||||
write(n, ' ');
|
||||
end;
|
||||
inc(n);
|
||||
end;
|
||||
writeln;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue