Advertisement
green1ant

2_2 notworking

Oct 28th, 2018
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement