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 &nbsp; '''n''' &nbsp; in base 16, &nbsp; where &nbsp; '''n &nbsp; &lt; &nbsp; 500<sub>10</sub>'''
Find palindromic primes &nbsp; '''n''' &nbsp; in base 16, &nbsp; where &nbsp; '''n &nbsp; &lt; &nbsp; 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}}==