Ver Mensaje Individual
  #15  
Antiguo 11-10-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Club Delphi,

Continuación del Msg #3:

Revisen este código:
Código Delphi [-]
program GeneratorPrimeNumbers;

{

Cálculo de Números Primos por el Algoritmo: Criba de Eratóstenes
  
Esta implementación permite calcular un máximo de 87.647.246 Números Primos en un tiempo de
00:02:41:663 sobre una máquina con un Procesador Phenom II X6 1090T a 3.2 GHZ, 4 GB RAM, 3 TB HDD y
OS Windows 7 Profesional x32.
  
El tiempo indicado es el tiempo total del proceso desde que inicia el cálculo hasta que se genera
el archivo de 953 MB con los 87.647.246 Números Primos.

}

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.
El código anterior permite hallar todos los números primos menores que un número natural n en el rango de 2 a 2.147.483.615, por medio del algoritmo de Eratóstenes.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 11-10-2013 a las 08:02:14.
Responder Con Cita