tm@polari.UUCP (Toshi Morita) (07/24/90)
Demo Pidgin program
;
; Sieve benchmark
;
top;
byte FL(10001);
int IIN;
byte NU;
int ICO;
int IPR;
int IRE;
byte AA;
byte CR;
int ITH;
byte TN;
int ISI;
byte ZE;
byte SP;
;
; main code
;
beginmain(AC,IAV);
CR=+013;
SP=+032;
ZE=+000;
ITH=+00003;
TN=+010;
ISI=+10000;
ms 'Sieve x 1'
ms '0... '
write CR;
NU=+255;
while;
NU++;
AA=NU<!TN;
on AA;
ICO=+00000; Set number of primes to zero
IIN=+00000;
while; Clear flags array to one
IIN++;
AA=IIN<=ISI;
on AA;
FL(IIN)=+001;
endwhile;
IIN=+00000;
while;
IIN++;
AA=IIN<=ISI;
on AA;
AA=FL(IIN);
if AA;
IPR=IIN+IIN;
IPR=IPR+ITH;
; decprt IPR;
; write SP;
IRE=IIN+IPR;
while;
AA=IRE<!ISI;
on AA;
FL(IRE)=ZE;
IRE=IRE+IPR;
endwhile;
ICO++;
endif;
endwhile;
endwhile;
ms '...done. ';
write CR;
decprt ICO;
ms ' primes. ';
endmain;
bottom;tm@polari.UUCP (Toshi Morita) (08/05/90)
Sieve demo for QForth.
10000 constant size
create flags size 1+ allot
variable count
variable prime
variable ref
: sieve
cr ." Sieve x 10... " cr
10 0
do
0 count !
flags size 1+ 1 fill
size 1+ 1
do
flags i + c@
if
i dup + 2+ 1+ prime !
i prime @ + ref !
begin
ref @ size <
while
0 flags ref @ + c!
ref @ prime @ + ref !
repeat
count @ 1+ count !
else
then
loop
loop
." ...done. " cr count ? ." primes. "
;