Tổng ước số bằng n?

5

Tổng ước số bằng n?

Một bạn hỏi chúng tôi bài lập trình pascal như sau: Tìm những số nguyên bé hơn hoặc bằng N (N nhập từ máy tính) có tổng ước số bằng N?

Ước số là gì ?

Ước số là những số mà nó chia hết ví dụ 6 có các ước số là 1, 2, 3 và 6

Dưới đây là một số hình ảnh quá trình code thử

biên dịch

Chạy thử có kết quả

Trường hợp không có kết quả

Program BT;
Uses Crt;
Var i,n:Integer;
    kt:Boolean;
Function TongUS(K:integer):integer;
  Var S,J:Integer;
  Begin
    S:=0; J:=1;
    While J<=Sqrt(K) do
      Begin
        If K mod J = 0 then S:=S+J;
        Inc(j);
      End;
    TongUS:=S+K;
  End; {Function}

Begin {chuong trinh chinh}
  Clrscr;
  Write('Nhap so n='); Readln(n);
  Kt:=False;
  For i:=1 to n do
     If TongUS(i)=n then
      Begin
        Writeln('Tong uoc so cua so ',i,' =',n);
        Kt:=True;
      End;
  If Not Kt Then Writeln('Khong co so nao ma tong uoc so cua no =',n);
  Textcolor(Green);
  Writeln('http://www.emyeutinhoc.com');
  Readln;
End.

Đây là một bài tập tương đối dễ, bạn có thể thấy trong chương trình chúng tôi khai báo một biến kiểu logic là Kt, biến này mục đích đưa ra thông báo trong trường hợp người dùng nhập vào một con số và không có số nào mà tổng ước số bằng số đó.

5 1 vote
Article Rating
Share.

About Author

٩(●̮̮̃•̃)۶ Không có lẽ yêu trên đời quá khó ٩(͡๏̯͡๏)۶ Mà thôi yêu cũng chẳng dễ chút nào! ٩(×̯×)۶

Subscribe
Thông báo
guest
5 Comments
oldest
newest most voted
Inline Feedbacks
View all comments
Dinh Van An
Dinh Van An
3 years ago

Chỗ While J<=Sqrt(K) do e thấy chưa phù hợp lắm.
Ví dụ như số 6 thì j sẽ nhận giá trị là {1, 2} , và tổng các ước số sẽ là 1 + 2 + 6, nhưng thực tế là còn số 3 nữa. E nghĩ nên chỉnh lại điều kiện J <= (K div 2)

Dinh Van An
Dinh Van An
Reply to  Đình Trọng
3 years ago

E hiểu r :v

Dinh Van An
Dinh Van An
Reply to  Đình Trọng
3 years ago

Cảm ơn a nhiều nhé <3

5
0
Would love your thoughts, please comment.x
()
x