Advertisement
ksyshshot

Lab_2.2

Oct 24th, 2022 (edited)
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.54 KB | Source Code | 0 0
  1. Program Lab_2_2;
  2.  
  3. {$APPTYPE CONSOLE}
  4. {$R *.res}
  5.  
  6. Uses
  7.     System.SysUtils;
  8.  
  9. Type
  10.     TArr = Array Of ShortInt;
  11.  
  12. Var
  13.     ArrayOfCorrect: TArr;
  14.     N: ShortInt;
  15.  
  16. Function InputNumber (): ShortInt;
  17. Const
  18.     MAX_NUMBER = 127;
  19.     MIN_NUMBER = 2;
  20. Var
  21.     Number: ShortInt;
  22.     IsCorrect: Boolean;
  23. Begin
  24.     Repeat
  25.         Writeln ('Введите натуральное число N в диапазоне от ', MIN_NUMBER,' до ', MAX_NUMBER);
  26.         IsCorrect := True;
  27.         Try
  28.             Readln (Number);
  29.         Except
  30.             Writeln ('Данные введены некорректно');
  31.             IsCorrect := False;
  32.         End;
  33.         If (IsCorrect) And ((Number < MIN_NUMBER) Or (Number > MAX_NUMBER))Then
  34.         Begin
  35.             Writeln ('Введено число неверного диапазона');
  36.             IsCorrect := False;
  37.         End
  38.     Until (IsCorrect);
  39.     InputNumber := Number;
  40. End;
  41.  
  42. Function ArrayOfIntegers (Number: ShortInt): TArr;
  43. Var
  44.     I: Integer;
  45.     ArrNumbers: TArr;
  46. Begin
  47.     Dec(Number);
  48.     SetLength (ArrNumbers, Number);
  49.     For I := 0 To Number Do
  50.         ArrNumbers[I] := I + 2;
  51.     ArrayOfIntegers := ArrNumbers;
  52. End;
  53.  
  54. Function FindingRequiredNumbers (Number: ShortInt): TArr;
  55. Const
  56.     ArrOfPrime: Array[0..17] Of Integer = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61);
  57. Var
  58.     I, K, Quotient: Integer;
  59.     ArrCorrectness: TArr;
  60.     ArrNumbers: TArr;
  61. Begin
  62.     ArrNumbers := ArrayOfIntegers (Number);
  63.     Dec(Number);
  64.     SetLength (ArrCorrectness, Number);
  65.     Dec(Number);
  66.     For I := 0 To Number Do
  67.     Begin
  68.         K := 0;
  69.         While (K < 18) And (ArrOfPrime[K] < ArrNumbers[I]) Do
  70.         Begin
  71.             If (ArrNumbers[I] Mod ArrOfPrime[K] = 0) Then
  72.             Begin
  73.                 Quotient := ArrNumbers[I] Div ArrOfPrime[K];
  74.                 K := 0;
  75.                 While (K < 18) And (ArrOfPrime[K] <= Quotient) Do
  76.                 Begin
  77.                     If (Quotient = ArrOfPrime[K]) Then
  78.                     Begin
  79.                         ArrCorrectness[I] := 1;
  80.                         K := 18;
  81.                     End
  82.                     Else
  83.                     Begin
  84.                         ArrCorrectness[I] := 0;
  85.                         Inc (K);
  86.                     End;
  87.                 End;
  88.             End
  89.             Else
  90.                 Inc (K);
  91.         End;
  92.     End;
  93.     FindingRequiredNumbers := ArrCorrectness;
  94. End;
  95.  
  96. Procedure NumberOutput(Number: ShortInt; ArrCorrect: TArr);
  97. Var
  98.     ArrNumbers: TArr;
  99.     ZeroValue, I: Integer;
  100. Begin
  101.     Writeln ('Полученные натуральные числа:');
  102.     ArrNumbers := ArrayOfIntegers (Number);
  103.     Dec(Number);
  104.     ZeroValue := 0;
  105.     For I := 0 To Number Do
  106.     Begin
  107.         If (ArrCorrect[I] = 1) Then
  108.             Write (ArrNumbers[I], ' ')
  109.         Else
  110.             Inc(ZeroValue);
  111.     End;
  112.     If (ZeroValue = Number) Then
  113.         Write ('Натуральные числа, соответствующие требованиям, не найдены');
  114. End;
  115.  
  116. Begin
  117.     Writeln ('Данная программа находит все натуральные числа, которые можно представить в виде произведения двух простых чисел и которые не превосходят введённое натуральное число N');
  118.     N := InputNumber;
  119.     ArrayOfCorrect := FindingRequiredNumbers (N);
  120.     NumberOutput (N, ArrayOfCorrect);
  121.     Readln;
  122. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement