green1ant

2_2 notworking

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