Advertisement
THOMAS_SHELBY_18

Lab2_2(Delphi)

Oct 18th, 2023 (edited)
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.50 KB | Source Code | 0 0
  1. Program Lab2_2;
  2. Uses
  3.   System.SysUtils;
  4.  
  5. Const
  6.     MAX_P = 10000;
  7.     MIN_P = 2;
  8.  
  9. Var
  10.     P, PrimeDivisor: Integer;
  11.  
  12. Function GetNum(Min, Max: Integer): Integer;
  13. Var
  14.     Num: Integer;
  15.     IsCorrect: Boolean;
  16. Begin
  17.     Repeat
  18.         IsCorrect := True;
  19.         Try
  20.             Readln(Num)
  21.         Except
  22.             Write('Некорректный ввод! Введите значение еще раз: ');
  23.             IsCorrect := False;
  24.         End;
  25.         If (IsCorrect) And ((Num < Min) Or (Num > Max)) Then
  26.         Begin
  27.             Write('Недопустимое значение! Введите значение еще раз: ');
  28.             IsCorrect := False;
  29.         End;
  30.     Until (IsCorrect);
  31.     GetNum := Num;
  32. End;
  33.  
  34. Function GetPrimeDivisor(Num: Integer): Integer;
  35. Var
  36.     I: Integer;
  37.     NumRoot: Real;
  38. Begin
  39.     NumRoot := Sqrt(Num);
  40.     I := 1;
  41.     Repeat
  42.         Inc(I);
  43.     Until ((Num Mod I = 0) Or (I > NumRoot));
  44.    
  45.     If I > NumRoot Then
  46.         GetPrimeDivisor := Num;
  47.     Else
  48.         GetPrimeDivisor := I;
  49. End;
  50.  
  51. Begin
  52.     Writeln('Данная программа найдет все простые делители натурального числа P');
  53.  
  54.     Write('Введите натуральное число Р от ', MIN_P, ' до ', MAX_P, ': ');
  55.     P := GetNum(MIN_P, MAX_P);
  56.  
  57.     Repeat
  58.         PrimeDivisor := GetPrimeDivisor(P);
  59.         Write(PrimeDivisor, ' ');
  60.         P := P Div PrimeDivisor;
  61.     Until P = 1;
  62.  
  63.     Readln;
  64. End.
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement