Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Lab2_2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- type
- TIntArray = array of Integer;
- TBoolArray = array of Boolean;
- function CheckInput(): Integer;
- var
- P: Integer;
- IsCorrectInput: Boolean;
- begin
- IsCorrectInput := False;
- repeat
- try
- Write('Please, enter P: ');
- Readln(P);
- if P < 2 then
- Writeln('Invalid input! P must be natural number from 2 to ', High(Integer), '.')
- else
- IsCorrectInput := True;
- except
- Writeln('Invalid input! P must be natural number from 2 to ', High(Integer), '.');
- end;
- until IsCorrectInput;
- CheckInput := P;
- end;
- function ProduceBoolArray(P: Integer): TBoolArray;
- var
- i: Integer;
- BoolArray: TBoolArray;
- begin
- SetLength(BoolArray, P);
- for i := 2 to P do
- BoolArray[i] := False;
- ProduceBoolArray := BoolArray;
- end;
- function FindPrimeNumbers(BoolArray: TBoolArray; P: Integer; var PrimeAmount: Integer): TBoolArray;
- var
- i, j: Integer;
- begin
- PrimeAmount := 0;
- for i := 2 to P do
- if not BoolArray[i] then
- begin
- j := i * 2;
- Inc(PrimeAmount);
- while (j <= P) do
- begin
- BoolArray[j] := True;
- j := j + i;
- end;
- end;
- FindPrimeNumbers := BoolArray;
- end;
- function TransformBoolArray(BoolArray: TBoolArray; P, PrimeAmount: Integer): TIntArray;
- var
- IntArray: TIntArray;
- i, j: Integer;
- begin
- j := 0;
- SetLength(IntArray, PrimeAmount);
- for i := 2 to P do
- begin
- if not BoolArray[i] then
- begin
- IntArray[j] := i;
- Inc(j);
- end;
- end;
- TransformBoolArray := IntArray;
- end;
- procedure OutputArray(IntArray: TIntArray; PrimeAmount: Integer);
- var
- i: Integer;
- begin
- Dec(PrimeAmount);
- for i := 0 to PrimeAmount do
- Write(IntArray[i],' ');
- end;
- procedure Main();
- var
- P, PrimeAmount: Integer;
- IntArray: TIntArray;
- BoolArray: TBoolArray;
- begin
- Writeln('This program shows all prime numbers from 2 to P.');
- Writeln('The range of input data is [2 to ', High(Integer), '].');
- P := CheckInput();
- BoolArray := ProduceBoolArray(P);
- BoolArray := FindPrimeNumbers(BoolArray, P, PrimeAmount);
- IntArray := TransformBoolArray(BoolArray, P, PrimeAmount);
- OutputArray(IntArray, PrimeAmount);
- Readln;
- end;
- begin
- Main();
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement