a) Xác định bài toán:
INPUT: một số nguyên n
OUTPUT: Có phải là số hoàn thiện hay không.
b) Ý tưởng
Ban đầu tổng bằng 0, cho i duyệt hết các số từ 1 đến n div 2, nếu n chia hết cho i thì tổng=tổng+i
*Thuật toán:
B1: Nhập số nguyên n
B2: tong←0; i←1;
B3: Nếu i>n div 2 thì đi tới B6
B4: Nếu n mod i=0 thì tong←tong+i;
B5: i←i+1; Quay lại B3
B6: Nếu tong=n thì in là số hoàn thiện ngược lại thì in không phải
c) Chương trình
program so_hoan_thien;
uses crt;
var n,i,tong:integer;
begin
clrscr;
write('Nhap so nguyen n: '); readln(n);
tong:=0;
for i:=1 to n div 2 do
if n mod i=0 then tong:=tong+i;
if tong=n then write('La so hoan thien')
else write('Khong phai so hoan thien');
readln;
end.