Palindromic primes in base 16: Difference between revisions
Content added Content deleted
(Added Quackery.) |
(Added solution for Action!) |
||
Line 4: | Line 4: | ||
Find palindromic primes '''n''' in base 16, where '''n < 500<sub>10</sub>''' |
Find palindromic primes '''n''' in base 16, where '''n < 500<sub>10</sub>''' |
||
<br><br> |
<br><br> |
||
=={{header|Action!}}== |
|||
{{libheader|Action! Sieve of Eratosthenes}} |
|||
<lang Action!>INCLUDE "H6:SIEVE.ACT" |
|||
BYTE FUNC Palindrome(CHAR ARRAY s) |
|||
BYTE l,r |
|||
l=1 r=s(0) |
|||
WHILE l<r |
|||
DO |
|||
IF s(l)#s(r) THEN RETURN (0) FI |
|||
l==+1 r==-1 |
|||
OD |
|||
RETURN (1) |
|||
PROC IntToHex(INT i CHAR ARRAY hex) |
|||
CHAR ARRAY digits="0123456789ABCDEF" |
|||
BYTE d |
|||
hex(0)=0 |
|||
WHILE i#0 |
|||
DO |
|||
d=i MOD 16 |
|||
hex(0)==+1 |
|||
hex(hex(0))=digits(d+1) |
|||
i==/16 |
|||
OD |
|||
RETURN |
|||
BYTE Func IsPalindromicPrime(INT i CHAR ARRAY hex |
|||
BYTE ARRAY primes) |
|||
BYTE d |
|||
INT rev,tmp |
|||
IF primes(i)=0 THEN |
|||
RETURN (0) |
|||
FI |
|||
IntToHex(i,hex) |
|||
IF Palindrome(hex) THEN |
|||
RETURN (1) |
|||
FI |
|||
RETURN (0) |
|||
PROC Main() |
|||
DEFINE MAX="499" |
|||
BYTE ARRAY primes(MAX+1) |
|||
INT i,count=[0] |
|||
CHAR ARRAY hex(5) |
|||
Put(125) PutE() ;clear the screen |
|||
Sieve(primes,MAX+1) |
|||
FOR i=2 TO MAX |
|||
DO |
|||
IF IsPalindromicPrime(i,hex,primes) THEN |
|||
Print(hex) Put(32) |
|||
count==+1 |
|||
FI |
|||
OD |
|||
PrintF("%EThere are %I palindromic primes",count) |
|||
RETURN</lang> |
|||
{{out}} |
|||
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Palindromic_primes_in_base_16.png Screenshot from Atari 8-bit computer] |
|||
<pre> |
|||
2 3 5 7 B D 11 101 151 161 191 1B1 1C1 |
|||
There are 13 palindromic primes |
|||
</pre> |
|||
=={{header|ALGOL 68}}== |
=={{header|ALGOL 68}}== |