123456789101112131415161718192021222324252627282930313233343536373839404142 |
- { The Computer Language Shootout
- http://shootout.alioth.debian.org
- contributed by Joost van der Sluis
- }
- program nsieve;
- {$mode fpc}{$I-}
- var
- n : longint;
- procedure primes(n : longint); inline;
- var
- flags: PBoolean;
- size,i,j,count : longint;
- begin
- size := 10000 shl n;
- flags := getmem(size+1);
- fillchar(flags^,memsize(flags),true);
- count := 0;
- for i := 2 to size do
- if flags[i] then
- begin
- inc(count);
- j := i + i;
- while j <= size do begin
- flags[j] := false;
- inc(j, i);
- end;
- end;
- writeln('Primes up to', size:9, count:9);
- freemem(flags);
- end;
- begin
- val(ParamStr(1), n);
- primes(n);
- primes(n-1);
- primes(n-2);
- end.
|