Advertisement
green1ant

2_2 f

Oct 28th, 2018
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.31 KB | None | 0 0
  1. program Project2;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   SysUtils,
  5.   Math;
  6.  
  7. const
  8.    ErrorMessage = 'Error! P should be natural number from 1 to 2147483647';
  9. type
  10.    TArray = array of Integer;
  11.  
  12. procedure EnterP(var P : Integer);
  13. var
  14.    Input : string;
  15.    IsCorrect : Boolean;
  16. begin
  17.    IsCorrect := False;
  18.    repeat
  19.       try
  20.          Writeln('Enter P');
  21.          Readln(Input);
  22.          P := StrToInt(Input);
  23.          if P < 1 then
  24.             Writeln(ErrorMessage)
  25.          else
  26.             IsCorrect := True
  27.       except
  28.          Writeln(ErrorMessage);
  29.       end;
  30.    until IsCorrect;
  31. end;
  32.  
  33. function GetSumOfDividers(N : Integer) : Integer;
  34. var
  35.    i, Last, Sum: Integer;
  36. begin
  37.  
  38.    Sum := 1;
  39.    Last := Trunc(Sqrt(N));
  40.    Write('1, ');
  41.    for i := 2 to Last do
  42.       if N mod i = 0 then
  43.       begin
  44.          if i*i = N then
  45.          begin
  46.             Sum := Sum + i;
  47.             Write(i, ' ');
  48.          end
  49.          else
  50.          begin
  51.             Sum := Sum + i + (N div i);
  52.             Write(i, ' + ', N div i, ', ');
  53.          end;
  54.       end;
  55.  
  56.    Writeln('(', Sum, ')');
  57.    GetSumOfDividers := Sum;
  58. end;
  59.  
  60.  
  61. procedure Main;
  62. var
  63.    P, i, x : Integer;
  64. begin
  65.    EnterP(P);
  66.    for i := 1 to P do
  67.       if IsPerfect(i) then
  68.          Write(i, ', ');
  69.    Readln;
  70. end;
  71.  
  72. begin
  73.    Main;
  74. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement