viết chương trình nhập vào từ bàn phím số nguyên dương n . kiểm tra xem n có phải số hoàn hảo không
2 câu trả lời
Cách 1: Ko dùng hàm
Program BTH;
uses crt;
var n:longint;
function kt(n:longint):boolean;
var i,s:longint;
Begin
s:=0;
write('Cac uoc cua ',n,' la: ');
For i:=1 to (n div 2) do
Begin
If n mod i=0 then s:=s+i;
write(i,' ');
end;
write(n);
writeln;
If n=s then kt:=true else kt:=false;
end;
Begin
clrscr;
write('Nhap n: ');readln(n);
If kt(n)=true then writeln(n,' la so hoan thien')
else writeln(n,' khong phai la so hoan thien');
readln;
end.
Cách 2: Dùng Hàm
Program BTH;
uses crt;
var n:longint;
function kt(n:longint):boolean;
var i,s,k:longint;
a:array[1..10000] of longint;
Begin
s:=0;
k:=0;
write('Cac uoc cua ',n,' la: ');
For i:=1 to (n div 2) do
Begin
If n mod i=0 then
Begin
s:=s+i;
k:=k+1;
a[k]:=i;
end;
end;
a[k+1]:=n;
For i:=1 to k+1 do
write(a[i],' ');
writeln;
If n=s then kt:=true else kt:=false;
end;
Begin
clrscr;
write('Nhap n: ');readln(n);
If kt(n)=true then writeln(n,' la so hoan thien')
else writeln(n,' khong phai la so hoan thien');
readln;
end.
Program Hotboy;
Uses crt;
Var n,i,s : longint;
Begin
Write('nhap so n');
Readln(n);
S:=0;
For i:=1 to n-1 do
If (n mod i=0) then s:=s+i;
If s=n then write(n,' la so hoan chinh') else write(n,'khong phai la so hoan chinh');
Readln
End.