uses crt;
var n,d,i,x,y,t,kt,t1,j:integer;
st:string;
begin
clrscr;
repeat
write('Nhap n='); readln(n);
until (1000<=n) and (n<=9999);
str(n,st);
d:=length(st);
t:=0;
for i:=1 to d do
begin
val(st[i],x,y);
t:=t+x;
end;
writeln('Tong cac chu so cua ',n,' la: ',t);
if t>1 then
begin
kt:=0;
for i:=2 to trunc(sqrt(t)) do
if t mod i=0 then
begin
kt:=1;
break;
end;
if kt=0 then writeln(t,' la so nguyen to')
else writeln(t,' khong la so nguyen to');
end
else writeln(t,' khong la so nguyen to');
t1:=0;
for j:=1 to t-1 do
if t mod j=0 then t1:=t1+j;
if t1=t then writeln(t,' la so hoan hao')
else writeln(t,' khong la so hoan hao');
if trunc(sqrt(t))=sqrt(t) then writeln(t,' la so chinh phuong')
else writeln(t,' khong la so chinh phuong');
readln;
end.
uses crt;
var n,d,i,x,y,t,kt,t1:integer;
st:string;
begin
clrscr;
repeat
write('Nhap n='); readln(n);
until (1000<=n) and (n<=9999);
str(n,st);
d:=length(st);
t:=0;
for i:=1 to d do
begin
val(st[i],x,y);
t:=t+x;
end;
writeln('Tong cac chu so cua ',n,' la: ',t);
if t>1 then
begin
kt:=0;
for i:=2 to trunc(sqrt(t)) do
if t mod i=0 then
begin
kt:=1;
break;
end;
if kt=0 then writeln(t,' la so nguyen to')
else writeln(t,' khong la so nguyen to');
end
else writeln(t,' khong la so nguyen to');
t1:=0;
for i:=1 to t-1 do
if t1 mod i=0 then t1:=t1+i;
if t1=t then writeln(t,' la so hoan hao')
else writeln(t,' khong la so hoan hao');
if trunc(sqrt(t))=sqrt(t) then writeln(t,' la so chinh phuong')
else writeln(t,' khong la so chinh phuong');
readln;
end.