#USE "course.lib" PROC prim2(CHAN OF BYTE kyb, scr, err) VAL INT NUM.WORKERS IS 8: VAL INT MAX.NUMBER IS 1000000: [NUM.WORKERS]CHAN OF INT primes: PAR -- print process INT running, prime: SEQ -- out.string("2*n", 0, scr) running := NUM.WORKERS WHILE running > 0 ALT i = 0 FOR NUM.WORKERS primes[i] ? prime SEQ IF prime = (-1) running := running - 1 TRUE SEQ -- print number -- out.int(prime, 0, scr) -- out.string("*n", 0, scr) SKIP PAR k = 0 FOR NUM.WORKERS INT n, p: BOOL isprime: SEQ n := 3 + (2 * k) WHILE n < MAX.NUMBER SEQ p := 3 isprime := TRUE WHILE isprime AND ((p * p) < n) IF (n \ p) = 0 isprime := FALSE TRUE p := p + 2 IF isprime primes[k] ! n TRUE SKIP n := n + (2 * NUM.WORKERS) primes[k] ! -1 :