diff --git a/tests/bench/shootout/src/nsieve.pp b/tests/bench/shootout/src/nsieve.pp index 0caa2c24da..ba9e3e3547 100644 --- a/tests/bench/shootout/src/nsieve.pp +++ b/tests/bench/shootout/src/nsieve.pp @@ -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. \ No newline at end of file +end.