Jump to content

Mian-Chowla sequence: Difference between revisions

→‎Sieve version: improved sieve management
m (→‎Sieve version: improved code)
(→‎Sieve version: improved sieve management)
Line 1,910:
</pre>
===Sieve version===
This approach is 625 times faster and uses less memory, thanks to a dynamic sieve.
« 39 DUP STWS / CEIL
« # 0b » 'x' 1 4 ROLL 1 SEQ
» '<span style="color:blue">CSV</span>' STO <span style="color:grey">''@ ( size → { sieve } )''</span>
« '''IF''' DUP2 EVAL SIZE 39 * > '''THEN'''
« SWAP 1 - 39 MOD LASTARG / IP 1 +
DUP2 EVAL SIZE SWAP 39 / CEIL 1 - '''START''' DUP #0 STO+ '''NEXT'''
'''END'''
« SWAP 1 - 39 MOD LASTARG / IP 1 +
ROT SWAP DUP2 GET 2 5 ROLL ^ R→B OR PUT
» '<span style="color:blue">SSV</span>' STO <span style="color:grey">''@ ( val 'sieve' → )''</span>
« '''IF''' DUP2 EVAL SIZE 39 * > '''THEN''' DROP2 0 '''ELSE'''
« SWAP 1 - 39 MOD LASTARG / IP 1 +
ROT SWAP GET1 - 239 ROTMOD ^LASTARG R→B/ ANDIP #1 0b+
ROT SWAP GET 2 ROT ^ R→B AND # 0b ≠
'''END'''
» '<span style="color:blue">SVS?</span>' STO <span style="color:grey">''@ ( val 'sieve' → boolean )''</span>
1,151

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.