Về định nghĩa thì ta có: Số hoàn thiện (hay còn gọi là số hoàn chỉnh, số hoàn hảo hoặc số hoàn thành) là một số nguyên dương mà tổng các ước nguyên dương của nó (số nguyên dương chia hết cho nó) bằng chính nó.
Còn thuật toán thì ta có các bước:
-Bước 1: Nhập vào n từ bàn phím
-Bước 2: Tính tổng S các số mà n chia hết trong khoảng [1..n-1]
-Bước 3: Nếu S = n, số n là số hoàn thiện
* Giờ đến bước viết chương trình nào :3
Cách 1:
program cach1;
uses crt;
var n,i,s : integer;
begin clrscr;
write('Nhap so n:'); readln(n);
For i:=1 to n-1 do
if n mod i =0 then s:=s+i;
if n=s then write(n,' la so hoan thien ') else write(n,'khong la so hoan thien');
readln
end.
Cách 2:
Program cach2;
var n: real;
Function kiemtra(x:integer):boolean;
var tam,i:integer;
begin
tam:=0; kiemtra:=false;
for i:= 1 to (x div 2) do
if x mod i = 0 then tam:=tam+i;
if tam = x then kiemtra:=true;
end;
begin
writeln('Nhap so can kiem tra ');
readln(n);
if kiemtra(n) then writeln('So ',n,' la so hoan thien') else writeln('So ',n,' khong phai la so hoan thien');
readln;
end.
Mình biết cái này là nâng cao nên có hơi khó hiểu nên bạn chịu khó nha
CHÚC BẠN HỌC TỐT ^_^