\ forum.6502.org/viewtopic.php?f=9&t=3706&sid=9f1148e3754d1de7494804a8ef902710 : ceil-log2 ( u-u) 0 begin swap 1 rshift swap 1+ over 0= until nip ; -1 here c! here c@ ceil-log2 8 - throw \ 8 bit chars. -1 ceil-log2 64 - throw \ 64 bit cells. : bits ( u-u) 7 + 3 rshift ; : th-bit ( i-mo) 1 over 63 and lshift swap 6 rshift cells ; : reset! ( ma-) swap invert over @ and swap ! ; : set? ( ma-f) @ and ; 1024 constant len Create primes len bits allot : clear ( -) primes len bits -1 fill ; : prime? ( n-f) th-bit primes + set? ; : composite! ( n-) th-bit primes + reset! ; : scan+ ( n-n0/n-1) begin 1+ dup len < while dup prime? until 0 else drop 1 then ; : sieve ( n-) dup begin over + dup len < while dup composite! repeat 2drop ; : sieves ( n-) begin dup sieve scan+ until ; clear 2 sieves \ simple print loop. : primes. ( -) 2 begin dup . scan+ until ; cr cr primes. \ streaming values via coroutine: : co ( -^rs-sr) 2r> swap 2>r ; : primes ( -n,n-n) 2 begin co scan+ until rdrop ; : primes. ( -) primes begin dup . co again ; cr cr primes. cr cr depth .