Đề: Hai số m,n gọi là bạn của nhau nếu tổng các
ước của m bằng n và ngược lại.Tìm tất cả các số là bạn của nhau và nhỏ hơn
10001.
Ý tưởng: Thay vì chạy 2 vòng lặp để xét m và n, ta có thể chỉ cần chạy 1 vòng lặp kiểm tra xem m và uoc(m) có là bạn của nhau không.
Ý tưởng: Thay vì chạy 2 vòng lặp để xét m và n, ta có thể chỉ cần chạy 1 vòng lặp kiểm tra xem m và uoc(m) có là bạn của nhau không.
Lời giải:
PROGRAM timban; FUNCTION uoc(k:INTEGER):longint; VAR i,tong:INTEGER; BEGIN tong:=0; FOR i:=1 TO k DIV 2 DO IF k MOD i =0 THEN tong:=tong+i; uoc:=tong; END; VAR m:longint; BEGIN for m:= 1 to 10001 do if uoc(uoc(m)) = m then writeln(m, ' va ', uoc(m),' la ban cua nhau'); readln END.
Không có nhận xét nào:
Đăng nhận xét