PDA

View Full Version : [Q] In ra so hoan thien



command29_10
21-10-2002, 18:40
So hoan thien la so ma tong cac uoc cua no tru chinh no bang chinh no.
VD: 6 = 1 + 2 + 3;
28 = 1 + 2 + 4 + 7 +14;
1) Viet chuong trinh (Pascal) nhap vao so n.
Cho biet so n co phai la so hoan thien hay khong? (n <= 2 ty)
2) Nhu tren nhung khi xuat ra man hinh phai ghi:
VD: 6 = 1 + 2 + 3; neu la so hoan thien
8 <> 1 + 2 + 4; neu khong la so hoan thien
3) Nhap vao so n. In ra tat ca cac so hoan htien be hon n.
(n <= 2 ty)
** Coi chung chuong trinh chay rat cham. Lam cach nao de chuong trinh chay nhanh nhat **

tsondt
23-10-2002, 16:53
Số hoàn chỉnh là số có dạng : N=2^(n-1)*(2^n - 1) với n là số nguyên tố và 2^n - 1 cũng là số nguyên tố. Với cách này bạn xét n=2,3,5,7,11,... và tính khi N>2 tỷ thì dửng.

command29_10
24-10-2002, 18:10
Cam on ban.

real_time
26-10-2002, 14:37
Đúng vậy command29_10 ạ mình có chương trình này nhưng chay với n=maxint mà mất đến >5phút là ít. mọi người góp ý thêm nhé:
uses crt;
var
s,max,n,i:longint;
begin
Write('cho gioi han');readln(max);
if n<6 then
begin
wirte('khong co so hoan thien');readln; exit;
end;
for n:=5 to max do
begin
s:=1
for i:=2 to n do
if n mod i=0 then s:=s+i;
if s=n then writeln(i,' la so hoan thien')
end;
end.

tsondt
26-10-2002, 23:32
Bạn dùng cách mình chỉ xem sao, có thể xét lớn hơn nhiều đó.

command29_10
27-10-2002, 16:44
Cach cua tsondt tuy chay rat nhanh. Nhung voi cac so nguyen to 2,3,5,7 thi dung. Toi so 11 lai sai. So tiep theo cua 8128 phai la so co 8 chu so co. Danh nay chi co 7 chu so thoi. Tro thu nghi ky xem.

real_time
29-10-2002, 13:40
Nếu dùng trức tiếp như mình phải thực hiện rất nhiều phép chia ta có cách nào khác không?

Zero
30-10-2002, 13:09
To real_time : ông anh thử cách tính tổng các ước của một số của em ở bên số anh em đi lúc đó tính tổng các ước của một số ai chỉ mất có sqrt(ai) thôi đảm bảo ông anh chạy chương trình sẽ nhanh hơn hẳn Ok?

To command : số hoàn thiện là số có dạng như thế thôi chứ không phải tất cả các số nguyên tố thay vào công thức đó đều cho ra số hoàn thiện đâu, nên khi thay số nguyên tố vào công thức rồi bạn còn phải viết thêm một đoạn mã kiểm tra xem số được sinh ra có phải số hoàn thiện không.

real_time
30-10-2002, 20:20
ừ nghe có lý và hay nữa đó để xem lại