-
[Q] In ra so hoan thien
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 **
-
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.
-
-
Đú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.
-
Bạn dùng cách mình chỉ xem sao, có thể xét lớn hơn nhiều đó.
-
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.
-
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?
-
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.
-
ừ nghe có lý và hay nữa đó để xem lại