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ố đó.