Weird numbers: Difference between revisions
Content added Content deleted
m (→{{header|Wren}}: Minor tidy) |
(added RPL) |
||
Line 2,731: | Line 2,731: | ||
Found 400 weird numbers |
Found 400 weird numbers |
||
</pre> |
</pre> |
||
=={{header|RPL}}== |
|||
{{works with|RPL|HP-49C}} |
|||
<span style="color:grey"> @ ------- Sieve manager ---------</span> |
|||
« 39 DUP STWS / CEIL |
|||
« # 0b » 'x' 1 4 ROLL 1 SEQ |
|||
» '<span style="color:blue">CSV</span>' STO |
|||
« 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 |
|||
« SWAP 1 - 39 MOD LASTARG / IP 1 + |
|||
ROT SWAP GET 2 ROT ^ R→B AND # 0b ≠ |
|||
» '<span style="color:blue">SVS?</span>' STO |
|||
<span style="color:grey"> @ --- Weird numbers generator ---</span> |
|||
« → beg |
|||
« DUP ←divs DOT ←n |
|||
'''CASE''' |
|||
DUP2 == '''THEN''' DROP2 1 SF '''END''' |
|||
> '''THEN''' |
|||
beg ←ndiv '''FOR''' j |
|||
'''IF''' DUP j GET '''THEN''' |
|||
DUP j 0 PUT j <span style="color:blue">FINDSUM</span> |
|||
'''IF''' 1 FS? '''THEN''' ←ndiv 'j' STO '''END''' |
|||
'''END''' |
|||
'''NEXT''' |
|||
'''END''' |
|||
'''END''' DROP |
|||
» » '<span style="color:blue">FINDSUM</span>' STO <span style="color:grey">''@ ( [ bits ] 1st_bit → ) flag 1 is set if →n is semi-perfect''</span> |
|||
« '''IF''' DUP 'Sieve' <span style="color:blue">SVS?</span> THEN DROP 0 |
|||
'''ELSE''' |
|||
DUP DIVIS SORT REVLIST TAIL AXL DUP SIZE EVAL → ←n ←divs ←ndiv |
|||
« ←divs DUP 1 CON |
|||
'''IF''' SWAP OVER DOT ←n < '''THEN''' DROP 0 |
|||
'''ELSE''' |
|||
1 CF 1 <span style="color:blue">FINDSUM</span> 1 FC? |
|||
'''IF''' DUP NOT ←n SieveMax 2 / ≤ AND '''THEN''' |
|||
2 SieveMax ←n / FLOOR |
|||
'''FOR''' j j ←n * 'Sieve' <span style="color:blue">SSV</span> '''NEXT''' |
|||
'''END''' |
|||
'''END''' |
|||
» |
|||
'''END''' |
|||
» '<span style="color:blue">WEIRD?</span>' STO |
|||
« 2 → n |
|||
« { } 20000 'SieveMax' ▶ <span style="color:blue">CSV</span> 'Sieve' STO |
|||
'''WHILE''' DUP SIZE 25 < '''REPEAT''' |
|||
'''IF''' n <span style="color:blue">WEIRD?</span> THEN n + '''END''' |
|||
'n' 2 STO+ |
|||
'''END''' |
|||
» » '<span style="color:blue">TASK</span>' STO |
|||
{{out}} |
|||
<pre> |
|||
1: { 70 836 4030 5830 7192 7912 9272 10430 10570 10792 10990 11410 11690 12110 12530 12670 13370 13510 13790 13930 14770 15610 15890 16030 16310 } |
|||
</pre> |
|||
It took 269 seconds for an emulator running on an iPhone XR => probably 3 hours for an HP-50 pocket calculator. |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |