(# SieveE: (# candidates: [1000] @integer; i: @integer; j: @integer; do (for i: candidates.range repeat 1->candidates[i] for); 0->candidates[1]; 1->i; L1: (# do (if i>1000 then leave L1; if); L2: (# do (if (i>1000) or (candidates[i] <> 0) then leave L2; if); i + 1 -> i; restart L2; #); (if i<1000 then 2->j; L3: (# do (if i*j > 1000 then leave L3; if); 0->candidates[i*j]; j + 1 -> j; restart L3; #); i + 1 -> i; if); restart L1; #); (for i: candidates.range repeat (if candidates[i] <> 0 then i -> PutInt; ' is prime'->PutLine; if); for); #) do SieveE #)