Một số tự nhiên N được gọi là số hoàn thiện nếu nó bằng tổng các ước số của nó và bé hơn nó. (Ví dụ số 6 là số hoàn thiện vì số 6 có 3 ước bé hơn nó là 1, 2, 3 và 6=1+2+3). Cho trước N. Em hãy nêu thuật toán để kiểm tra xem N có phải là số hoàn thiện hay không?

2 câu trả lời

Thuật toán:

Bước 1: Khởi tạo biến i = 1, tổng = 0;

Bước 2: Nếu N chia hết cho i (N mod i = 0) thì tăng tổng lên i đơn vị (tổng += i)

Bước 3: Tăng i lên một đơn vị (++i)

Bước 4: Nếu i lớn hơn một nửa của N, (i > N/2) thì di chuyển đến bước tiếp theo. Nếu không thì quay về bước 2.

Bước 5: Nếu tổng bằng N thì số N là số hoàn thiện. Trái lại thì không.

Hãy bình chọn câu hỏi của mình nhé :) Cảm ơn bạn nhiều.

var n,s,i:longint;

begin

write('Nhap n: '); readln(n);

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 thien') else writeln(,' khong phai la so hoan thien);

readln

end.

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