Advertisement
mixster

mixster

Jul 7th, 2009
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 0.93 KB | None | 0 0
  1. program New;
  2. function IsPrime(var p: TIntegerArray; a: Integer): Boolean;
  3. var
  4.   b: Integer;
  5. begin
  6.   Result := False;
  7.   for b := 0 to High(p) do
  8.     if a mod p[b] = 0 then
  9.       Exit;
  10.   SetLength(p, High(p) + 2);
  11.   p[High(p)] := a;
  12.   Result := True;
  13. end;
  14.  
  15. procedure MarkPrime(var n: array of Boolean; a: Integer);
  16. var
  17.   b: Integer;
  18. begin
  19.   for b := 1 to High(n) / a do
  20.     if n[b * a] then
  21.       n[b * a] := False;
  22. end;
  23.  
  24. function ProducePrimes(t: Integer): Integer;
  25. var
  26.   n: array of Boolean;
  27.   p: TIntegerArray;
  28.   i: Integer;
  29. begin
  30.   Result := GetSystemTime;
  31.  
  32.   SetLength(n, t + 1);
  33.   for i := 2 to t do
  34.     n[i] := True;
  35.   for i := 2 to t do
  36.     if(IsPrime(p, i)) then
  37.       MarkPrime(n, i);
  38.  
  39.   Result := GetSystemTime - Result;
  40. end;
  41.  
  42. var
  43.   i: Integer;
  44. begin
  45.   Writeln('Begin');
  46.  
  47.   for i := 1 to 250 do
  48.     Writeln(IntToStr(i * 100) + ': ' + IntToStr(ProducePrimes(i * 100)));
  49.  
  50.   Writeln('End');
  51. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement