các bạn ơi cho mình hỏi về bài Viết chương trình tìm các số hoàn chỉnh nhỏ hơn n. tại sao lại lm như thế ạ giải thích cho mình với Program Tim_uoc_2; uses crt; Var S, n, i,j: longint; Begin clrscr; Write('Nhap so n ='); readln(n); For i:=1 to n do Begin S:=0; For j:=1 to i do if i mod j = 0 then S:=S+j; if S = 2*i then write(i:6,','); end; readln end.

1 câu trả lời

tìm số hoàn chỉnh nhỏ hơn n thì phải cho for đi từ 1 đến n-1;

sửa lại: dòng 7: For i:=1 to n-1 do

số hoàn chỉnh là số khi tổng các ước của nó ngoại trừ nó bằng với số đó thì mới là số hoàn chỉnh 

VD: n=6;

6 là số hoàn chỉnh vì cộng lại bằng số n ngoại trừ số n vậy nó có các ước: 1+2+3=6;

vậy ở dong 10: sửa lại: For j:=1 to i-1; do if i mod j = 0 then S:=S+j;

chương trình sau khi sửa lại:

Program Tim_uoc_2;
uses crt;
Var S, n, i,j: longint;
Begin
    clrscr;
    Write('Nhap so n ='); readln(n);
    For i:=1 to n-1 do
    Begin
      S:=0;
      For j:=1 to i-1 do if i mod j = 0 then S:=S+j;
      if S = i then write(i:6,',');
    end;
    readln
end.