Circular primes: Difference between revisions
Content added Content deleted
m (→{{header|Julia}}: remove comment) |
(add RPL) |
||
Line 2,692: | Line 2,692: | ||
done... |
done... |
||
</pre> |
</pre> |
||
=={{header|RPL}}== |
|||
To speed up execution, we use a generator of candidate numbers made only of 1, 3, 7 and 9. |
|||
{{works with|HP|49}} |
|||
≪ 1 SF DUP |
|||
'''DO''' |
|||
→STR TAIL LASTARG HEAD + STR→ |
|||
'''CASE''' |
|||
DUP2 > OVER 3 MOD NOT OR '''THEN''' 1 CF '''END''' |
|||
DUP ISPRIME? NOT '''THEN''' 1 CF '''END''' |
|||
'''END''' |
|||
'''UNTIL''' DUP2 == 1 FC? OR '''END''' |
|||
DROP2 1 FS? |
|||
≫ '<span style="color:blue">CIRC?</span>' STO |
|||
≪ →STR "9731" → prev digits |
|||
≪ 1 SF "" <span style="color:grey">@ flag 1 set = carry</span> |
|||
prev SIZE 1 '''FOR''' j |
|||
digits DUP |
|||
prev j DUP SUB POS 1 FS? - |
|||
'''IF''' DUP NOT '''THEN''' DROP digits SIZE '''ELSE''' 1 CF '''END''' |
|||
DUP SUB SWAP + |
|||
-1 '''STEP''' |
|||
'''IF''' 1 FS? '''THEN''' digits DUP SIZE DUP SUB SWAP + '''END''' |
|||
STR→ |
|||
≫ ≫ '<span style="color:blue">NEXT1379</span>' STO |
|||
≪ 2 CF { 2 3 5 7 } 7 |
|||
DO |
|||
<span style="color:blue">NEXT1379</span> |
|||
'''IF''' <span style="color:blue">CIRC?</span> '''THEN''' |
|||
SWAP OVER + SWAP |
|||
'''IF''' OVER SIZE 19 ≥ '''THEN''' 2 SF '''END''' |
|||
'''END''' |
|||
'''UNTIL''' 2 FS? '''END''' DROP |
|||
≫ '<span style="color:blue">TASK</span>' STO |
|||
{{out}} |
|||
<pre> |
|||
1: { 2 3 5 7 11 13 17 37 79 113 197 199 337 1193 3779 11939 19937 193939 199933 } |
|||
</pre> |
|||
Runs in 13 minutes 10 seconds on a HP-50g. |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
It takes more then 25 minutes to verify that R49081 is probably prime - omitted here. |
It takes more then 25 minutes to verify that R49081 is probably prime - omitted here. |
||
Line 2,736: | Line 2,777: | ||
R25031 circular_prime ? false |
R25031 circular_prime ? false |
||
</pre> |
</pre> |
||
=={{header|Rust}}== |
=={{header|Rust}}== |
||
{{trans|C}} |
{{trans|C}} |