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.