counter:=prog(end: int, c: chan of int) | |
{ | |
i:int; | |
for(i=2; i<end; i++) | |
c<-=i; | |
}; | |
filter:=prog(prime: int, listen: chan of int, send: chan of int) | |
{ | |
i:int; | |
for(;;) | |
if((i=<-listen)%prime) | |
send<-=i; | |
}; | |
# BREAK OMIT | |
sieve:=prog(c: chan of int) | |
{ | |
for(;;){ | |
prime:=<-c; | |
print(prime, " "); | |
newc:=mk(chan of int); | |
begin filter(prime, c, newc); | |
c=newc; | |
} | |
}; | |
count:=mk(chan of int); | |
begin counter(10000, count); | |
begin sieve(count); | |
""; |