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.

Câu hỏi trong lớp Xem thêm