mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-18 05:39:26 +02:00
uses pointer instead of dynamic array which needs initialization.
git-svn-id: trunk@5552 -
This commit is contained in:
parent
9a90410081
commit
0a983cfa11
@ -6,31 +6,32 @@
|
||||
|
||||
program nsieve;
|
||||
|
||||
{$mode objfpc}
|
||||
{$mode objfpc}{$I-}
|
||||
|
||||
var n : integer;
|
||||
var
|
||||
n : integer;
|
||||
|
||||
procedure primes(n : integer); inline;
|
||||
var flags : array of boolean;
|
||||
size,i,j,count : integer;
|
||||
var
|
||||
flags: PBoolean;
|
||||
size,i,j,count : integer;
|
||||
begin
|
||||
size := 10000 shl n;
|
||||
SetLength(flags, size+1);
|
||||
for i := 2 to size do flags[i] := true;
|
||||
//fillchar(flags[0],length(flags),ord(true));
|
||||
flags := getmem(size+1);
|
||||
fillchar(flags^,memsize(flags),true);
|
||||
count := 0;
|
||||
for i := 2 to size do
|
||||
if flags[i] then
|
||||
begin
|
||||
count := count + 1;
|
||||
inc(count);
|
||||
j := i + i;
|
||||
while j <= size do begin
|
||||
// flags[j] := false;
|
||||
if flags[j] then flags[j] := false;
|
||||
j := j + i;
|
||||
flags[j] := false;
|
||||
inc(j, i);
|
||||
end;
|
||||
end;
|
||||
writeln('Primes up to', size:9, count:9);
|
||||
freemem(flags);
|
||||
end;
|
||||
|
||||
begin
|
||||
@ -38,4 +39,4 @@ begin
|
||||
primes(n);
|
||||
primes(n-1);
|
||||
primes(n-2);
|
||||
end.
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user