program GeneratorPrimeNumbers;
uses
SysUtils, Classes, Dialogs;
var
Limit, i, j: Integer;
Numbers: TBits;
F : TextFile;
NumberPrime : Integer;
TI, TF: TDateTime;
begin
repeat
try
Limit := StrToInt(InputBox('Generador de Números Primos', 'Número Primo Máximo a Calcular:', '1000'));
except
Limit := 0;
end;
until (Limit >= 2) and (Limit <= 2147483615);
TI := Now;
Numbers := TBits.Create;
try
Numbers.Size := Limit;
NumberPrime := 0;
for i := 2 to Limit do
if not Numbers[i] then
begin
j := i * i;
while (j <= Limit) and (j > 0) do
begin
Numbers[j] := True;
Inc(j, i);
end;
end;
FileMode := fmOpenWrite;
AssignFile(F, 'NumberPrime.txt');
Rewrite(F);
for i := 2 to Limit do
if not Numbers[i] then
begin
Writeln(F, i);
Inc(NumberPrime);
end;
finally
Numbers.Free;
CloseFile(F);
end;
TF := Now - TI;
Showmessage(Format('Se Generaron %d números primos en %s',[NumberPrime,FormatDateTime('hh:mm:ss:zzz', TF)]));
end.