Được gửi bởi
SecretStar9x
xác định 1 số có phải là số hoàn hảo hay không (số mà tổng các ước của nó trừ nó ra bằng chính nó)
Làm như thế này có đc ko? Nếu không được thì sai ở đâu?
program kiem_tra;
uses crt;
var a,b,S,i: integer;
begin
clrscr;
write('Nhap a='); readln(a);
b:=0;
i:=0;
while i<a do
i:=i+1;
b:=b+i;
end;
S:=0;
if (a mod b=0) then S:=S+b;
if (a=S) then writeln('a la so hoan hao')
else writeln('a khong la so hoan hao');
readln
end.
phần S:=0;
if (a mod b=0) then S:=S+b;
if (a=S) then writeln('a la so hoan hao')
else writeln('a khong la so hoan hao');
phải cho trong vòng lặp hay cho ở ngoài vòng lặp cũng đc?
code của bạn khá dài, thực ra chỉ cần làm đơn giản các việc sau:
- tính tổng các ước của số n
- kiểm tra tổng các ước đó =n không, nếu có thì n là số hoàn hảo, nếu không thì n không là số hoàn hảo
-tính tổng cách ước:
Code:
tong:=0;
for i:=1 to n div 2 do
if n mod i=0 then tong:=tong+i;
kiểm tra:
Code:
if d=n --> số hoàn hảo và ngược lại
Bookmarks