Bài tập Pascal :Số hoàn hảo

N

nhavanbecon

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Mã:
PROGRAM bai5;
uses crt;
var a,i,d,tong:integer;
BEGIN
clrscr;
repeat
write('Nhap vao so a = '); readln(a);
until (a>999) and (a<10000);
if odd(a)=true then writeln('a la so le')
else writeln('a la so chan');
if a<2 then writeln('a khong phai la so nguyen to')
else
begin
d:=0;
for i:=2 to a div 2 do
if a mod i=0 then d:=d+1;
if d=0 then writeln('a la so nguyen to')
else writeln('a khong phai la so nguyen to');
end;
tong:=0;
[COLOR="Red"]for i:=1 to a-1 do[/COLOR]
if a mod i=0 then tong:=tong+1;
if tong=a then writeln(a,' la so hoan hao')
else writeln(a,' khong la so hoan hao');
readln;
END.
đây là code bài tìm tổng số số hoàn hảo có 4 chữ số của m, nhưng tại sao cô m bảo ở vòng lặp for phải là
for i:=1 to n div 2 to ?Nó có ảnh hưởng gì đến việc tính tổng các ước không?

Chú ý cho code vào tag code
Đã sửa
 
Last edited by a moderator:
L

lamdetien36

Giới hạn nhỏ nên làm như bạn là đủ rồi. Nếu muốn nhanh hơn thì làm như cô của bạn. Nhanh hơn thì chỉ xét tới sqrt(N), trong quá trình xét thì xét luôn N / i.
 
N

nhavanbecon

ý bạn là for i:=1 to trucn(sqrt(N)) do? Nhưng mình thử và chạy chương trình với n=28 nó lại đưa ra n không là số hoàn hảo :( Có cần thêm đk gì không?
 
Top Bottom