Palindromic primes in base 16

You are encouraged to solve this task according to the task description, using any language you may know.
- Task
Find palindromic primes n in base 16, where n < 50010
11l
F is_prime(a)
I a == 2
R 1B
I a < 2 | a % 2 == 0
R 0B
L(i) (3 .. Int(sqrt(a))).step(2)
I a % i == 0
R 0B
R 1B
L(n) 500
V h = hex(n)
I h == reversed(h) & is_prime(n)
print(h, end' ‘ ’)
print()
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1
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
- Output:
Screenshot from Atari 8-bit computer
2 3 5 7 B D 11 101 151 161 191 1B1 1C1 There are 13 palindromic primes
ALGOL 68
BEGIN # find primes that are palendromic in base 16 #
# sieve the primes to 499 #
PR read "primes.incl.a68" PR
[]BOOL prime = PRIMESIEVE 499;
# returns an array of the digits of n in the specified base #
PRIO DIGITS = 9;
OP DIGITS = ( INT n, INT base )[]INT:
IF INT v := ABS n;
v < base
THEN v # single dogit #
ELSE # multiple digits #
[ 1 : 10 ]INT result;
INT d pos := UPB result + 1;
WHILE v > 0 DO
result[ d pos -:= 1 ] := v MOD base;
v OVERAB base
OD;
result[ d pos : UPB result ]
FI # DIGITS # ;
# returns TRUE if the digits in d form a palindrome, FALSE otherwise #
OP PALINDROMIC = ( []INT d )BOOL:
BEGIN
INT left := LWB d, right := UPB d;
BOOL is palindromic := TRUE;
WHILE left < right AND is palindromic DO
is palindromic := d[ left ] = d[ right ];
left +:= 1;
right -:= 1
OD;
is palindromic
END;
# print the palendromic primes in the base 16 #
STRING base digits = "0123456789ABCDEF";
FOR n TO UPB prime DO
IF prime[ n ] THEN
# have a prime #
IF []INT d = n DIGITS 16;
PALINDROMIC d
THEN
# the prime is palindromic in base 16 #
print( ( " " ) );
FOR c FROM LWB d TO UPB d DO print( ( base digits[ d[ c ] + 1 ] ) ) OD
FI
FI
OD;
print( ( newline ) )
END
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1
AppleScript
on isPrime(n)
if ((n < 4) or (n is 5)) then return (n > 1)
if ((n mod 2 = 0) or (n mod 3 = 0) or (n mod 5 = 0)) then return false
repeat with i from 7 to (n ^ 0.5) div 1 by 30
if ((n mod i = 0) or (n mod (i + 4) = 0) or (n mod (i + 6) = 0) or ¬
(n mod (i + 10) = 0) or (n mod (i + 12) = 0) or (n mod (i + 16) = 0) or ¬
(n mod (i + 22) = 0) or (n mod (i + 24) = 0)) then return false
end repeat
return true
end isPrime
on task()
set digits to "0123456789ABCDEF"'s characters
set output to {"2"} -- Take "2" as read.
repeat with n from 3 to 499 by 2 -- All other primes are odd.
if (isPrime(n)) then
-- Only the number's hex digit /values/ are needed for testing.
set vals to {}
repeat until (n = 0)
set vals's beginning to n mod 16
set n to n div 16
end repeat
-- If they're palindromic, build a text representation and append this to the output.
if (vals = vals's reverse) then
set hex to digits's item ((vals's beginning) + 1)
repeat with i from 2 to (count vals)
set hex to hex & digits's item ((vals's item i) + 1)
end repeat
set output's end to hex
end if
end if
end repeat
return output
end task
task()
- Output:
{"2", "3", "5", "7", "B", "D", "11", "101", "151", "161", "191", "1B1", "1C1"}
Arturo
palindrome?: function [a][
and? -> prime? a
-> equal? digits.base:16 a reverse digits.base:16 a
]
print map select 1..500 => palindrome? 'x -> upper as.hex x
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1
AWK
# syntax: GAWK -f PALINDROMIC_PRIMES_IN_BASE_16.AWK
BEGIN {
start = 1
stop = 499
for (i=start; i<=stop; i++) {
hex = sprintf("%X",i)
if (is_prime(i) && hex == reverse(hex)) {
printf("%4s%1s",hex,++count%10?"":"\n")
}
}
printf("\nPalindromic primes %d-%d: %d\n",start,stop,count)
exit(0)
}
function is_prime(x, i) {
if (x <= 1) {
return(0)
}
for (i=2; i<=int(sqrt(x)); i++) {
if (x % i == 0) {
return(0)
}
}
return(1)
}
function reverse(str, i,rts) {
for (i=length(str); i>=1; i--) {
rts = rts substr(str,i,1)
}
return(rts)
}
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1 Palindromic primes 1-499: 13
BASIC
BASIC256
include "isPrime.kbs"
inicio = 2
final = 499
cnt = 0
for i = inicio to final
hexi$ = tohex(i)
if isPrime(i) = true and hexi$ = Reverse$(hexi$) then
cnt += 1
print hexi$; " ";
end if
next i
print chr(10)
print "Encontrados "; cnt; " primos palindrómicos entre "; inicio; " y "; final
end
function Reverse$ (txt$)
txt2$ = ""
lt = length(txt$)
for x = lt to 1 step -1
txt2$ += mid(txt$, x, 1)
next x
return txt2$
end function
- Output:
Same as FreeBASIC entry.
FreeBASIC
#include "isPrime.bas"
Function Reverse(Byval text As String) As String
Dim As String text2 = text
Dim As Integer x, lt = Len(text)
For x = 0 To lt Shr 1 - 1
Swap text2[x], text2[lt - x - 1]
Next x
Return text2
End Function
Dim As Integer inicio = 2, final = 499, cnt = 0
For i As Integer = inicio To final
Dim As String hexi = Str(Hex(i))
If isprime(i) = True And hexi = Reverse(hexi) Then
cnt += 1
Print Hex(i); " ";
End If
Next i
Print !"\n\nEncontrados"; cnt; " primos palindrómicos entre " & inicio & " y " & final
Sleep
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1 Encontrados 13 primos palindrómicos entre 2 y 499
QBasic
DECLARE FUNCTION isPrime! (num!)
DECLARE FUNCTION Reverse$ (text$)
inicio = 2
final = 499
cnt = 0
FOR i = inicio TO final
hexi$ = HEX$(i)
IF isPrime(i) AND hexi$ = Reverse$(hexi$) THEN
cnt = cnt + 1
PRINT hexi$; " ";
END IF
NEXT i
PRINT CHR$(10)
PRINT "Encontrados"; cnt; "primos palindromicos entre"; inicio; "y"; final
END
FUNCTION isPrime (num)
FOR i = 2 TO SQR(num)
IF num MOD i = 0 THEN
isPrime = 0
EXIT FUNCTION
END IF
NEXT i
isPrime = -1
END FUNCTION
FUNCTION Reverse$ (text$)
text2$ = text$
lt = LEN(text$)
FOR x = 0 TO (lt \ 2) - 1
MID$(text2$, x + 1, 1) = MID$(text$, lt - x, 1)
MID$(text2$, lt - x, 1) = MID$(text$, x + 1, 1)
NEXT x
Reverse$ = text2$
END FUNCTION
QB64
The QBasic solution works without any changes.
Yabasic
import isPrime
inicio = 2
final = 499
cnt = 0
for i = inicio to final
hexi$ = hex$(i)
if isPrime(i) and hexi$ = Reverse$(hexi$) then
cnt = cnt + 1
print hexi$, " ";
end if
next i
print chr$(10)
print "Encontrados ", cnt, " primos palindromicos entre ", inicio, " y ", final
end
sub Reverse$ (txt$)
txt2$ = txt$
lt = len(txt$)
for x = 1 to int(lt / 2)
mid$(txt2$, x, 1) = mid$(txt$, lt - x + 1, 1)
mid$(txt2$, lt - x + 1, 1) = mid$(txt$, x, 1)
next x
return txt2$
end sub
- Output:
Same to FreeBASIC entry.
C++
See C++ solution for task 'Palindromic Primes'.
Delphi
function IsPrime(N: int64): boolean;
{Fast, optimised prime test}
var I,Stop: int64;
begin
if (N = 2) or (N=3) then Result:=true
else if (n <= 1) or ((n mod 2) = 0) or ((n mod 3) = 0) then Result:= false
else
begin
I:=5;
Stop:=Trunc(sqrt(N+0.0));
Result:=False;
while I<=Stop do
begin
if ((N mod I) = 0) or ((N mod (I + 2)) = 0) then exit;
Inc(I,6);
end;
Result:=True;
end;
end;
function IsPalindrome(N, Base: integer): boolean;
{Test if number is the same forward or backward}
{For a specific Radix}
var S1,S2: string;
begin
S1:=GetRadixString(N,Base);
S2:=ReverseString(S1);
Result:=S1=S2;
end;
procedure ShowPalindromePrimes16(Memo: TMemo);
var I: integer;
var Cnt: integer;
var S: string;
begin
Cnt:=0;
for I:=1 to 1000-1 do
if IsPrime(I) then
if IsPalindrome(I,16) then
begin
Inc(Cnt);
S:=S+Format('%4X',[I]);
If (Cnt mod 5)=0 then S:=S+CRLF;
end;
Memo.Lines.Add(S);
Memo.Lines.Add('Count='+IntToStr(Cnt));
end;
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1 313 373 3B3 Count=16 Elapsed Time: 2.116 ms.
EasyLang
fastfunc isprim num .
i = 2
while i <= sqrt num
if num mod i = 0
return 0
.
i += 1
.
return 1
.
func reverse s .
while s > 0
e = e * 16 + s mod 16
s = s div 16
.
return e
.
digs$[] = strchars "0123456789abcdef"
func$ hex n .
if n = 0
return ""
.
return hex (n div 16) & digs$[n mod 16 + 1]
.
for i = 2 to 499
if isprim i = 1
if reverse i = i
write hex i & " "
.
.
.
- Output:
2 3 5 7 b d 11 101 151 161 191 1b1 1c1
F#
This task uses Extensible Prime Generator (F#)
let rec fN g=[yield g%16; if g>15 then yield! fN(g/16)]
primes32()|>Seq.takeWhile((>)500)|>Seq.filter(fun g->let g=fN g in List.rev g=g)|>Seq.iter(printf "%0x "); printfn ""
- Output:
2 3 5 7 b d 11 101 151 161 191 1b1 1c1
Factor
USING: kernel math.parser math.primes prettyprint sequences
sequences.extras ;
500 primes-upto [ >hex ] [ dup reverse = ] map-filter .
- Output:
V{ "2" "3" "5" "7" "b" "d" "11" "101" "151" "161" "191" "1b1" "1c1" }
Go
package main
import (
"fmt"
"rcu"
"strconv"
"strings"
)
func reverse(s string) string {
chars := []rune(s)
for i, j := 0, len(chars)-1; i < j; i, j = i+1, j-1 {
chars[i], chars[j] = chars[j], chars[i]
}
return string(chars)
}
func main() {
fmt.Println("Primes < 500 which are palindromic in base 16:")
primes := rcu.Primes(500)
count := 0
for _, p := range primes {
hp := strconv.FormatInt(int64(p), 16)
if hp == reverse(hp) {
fmt.Printf("%3s ", strings.ToUpper(hp))
count++
if count%5 == 0 {
fmt.Println()
}
}
}
fmt.Println("\n\nFound", count, "such primes.")
}
- Output:
Primes < 500 which are palindromic in base 16: 2 3 5 7 B D 11 101 151 161 191 1B1 1C1 Found 13 such primes.
J
palindromic16=: (-: |.)@hfd@>
hfd@> (#~ palindromic16) p: i. p:inv 500
2
3
5
7
b
d
11
101
151
161
191
1b1
1c1
Java
import java.util.stream.IntStream;
public final class PalindromicPrimesInBase16 {
public static void main(String[] args) {
IntStream.range(2, 500).filter( i -> IntStream.range(2, i).noneMatch( p -> i % p == 0 ) )
.mapToObj(Integer::toHexString)
.filter( s -> s.equals( new StringBuilder(s).reverse().toString() ) )
.forEach( s -> System.out.print(s + " ") );
}
}
- Output:
2 3 5 7 b d 11 101 151 161 191 1b1 1c1
jq
Works with gojq, the Go implementation of jq
This entry uses a generator that produces an unbounded stream of arrays of the form [dec, hex], where `dec` is the palindromic prime as a JSON number, and `hex` is the JSON string corresponding to its hexadecimal representation.
For a suitable implementation of `is_prime`, see e.g. Erdős-primes#jq.
# '''Preliminaries'''
def emit_until(cond; stream): label $out | stream | if cond then break $out else . end;
# decimal number to exploded hex array
def exploded_hex:
def stream:
recurse(if . > 0 then ./16|floor else empty end) | . % 16 ;
if . == 0 then [48]
else [stream] | reverse | .[1:]
| map(if . < 10 then 48 + . else . + 87 end)
end;
The Task
# Output: a stream of [decimal, hexadecimal] values
def palindromic_primes_in_base_16:
(2, (range(3; infinite; 2) | select(is_prime)))
| exploded_hex as $hex
|select( $hex | (. == reverse))
| [., ($hex|implode)] ;
emit_until(.[0] >= 500; palindromic_primes_in_base_16)
- Output:
[2,"2"] [3,"3"] [5,"5"] [7,"7"] [11,"b"] [13,"d"] [17,"11"] [257,"101"] [337,"151"] [353,"161"] [401,"191"] [433,"1b1"] [449,"1c1"]
Julia
using Primes
ispal(n, base) = begin dig = digits(n, base=base); dig == reverse(dig) end
palprimes(N, base=16) = [string(i, base=16) for i in primes(N) if ispal(i, base)]
foreach(s -> print(s, " "), palprimes(500, 16)) # 2 3 5 7 b d 11 101 151 161 191 1b1 1c1
Mathematica /Wolfram Language
Giving the base 10 numbers and the base 16 numbers:
Select[Range[499], PrimeQ[#] \[And] PalindromeQ[IntegerDigits[#, 16]] &]
BaseForm[%, 16]
- Output:
{2, 3, 5, 7, 11, 13, 17, 257, 337, 353, 401, 433, 449} {Subscript[2, 16],Subscript[3, 16],Subscript[5, 16],Subscript[7, 16],Subscript[b, 16],Subscript[d, 16],Subscript[11, 16],Subscript[101, 16],Subscript[151, 16],Subscript[161, 16],Subscript[191, 16],Subscript[1b1, 16],Subscript[1c1, 16]}
Nim
import strformat, strutils
func isPalindromic(s: string): bool =
for i in 1..s.len:
if s[i-1] != s[^i]: return false
result = true
func isPrime(n: Natural): bool =
if n < 2: return false
if n mod 2 == 0: return n == 2
if n mod 3 == 0: return n == 3
var d = 5
while d * d <= n:
if n mod d == 0: return false
inc d, 2
if n mod d == 0: return false
inc d, 4
return true
var list: seq[string]
for n in 0..<500:
let h = &"{n:x}"
if h.isPalindromic and n.isPrime: list.add h
echo "Found ", list.len, " palindromic primes in base 16:"
echo list.join(" ")
- Output:
Found 13 palindromic primes in base 16: 2 3 5 7 b d 11 101 151 161 191 1b1 1c1
PascalABC.NET
##
uses School;
1.step.Where(n -> n.IsPrime)
.TakeWhile(p -> p < 500)
.Select(p -> p.ToString('X'))
.Where(s -> s = s[::-1])
.Println;
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1
Perl
(1 x $_ ) !~ /^(11+)\1+$/ # test if prime
and $h = sprintf "%x", $_ # convert to hex
and $h eq reverse $h # palindromic?
and print "$h " # much rejoicing
for 1..500;
- Output:
1 2 3 5 7 b d 11 101 151 161 191 1b1 1c1
Phix
with javascript_semantics function palindrome(string s) return s=reverse(s) end function sequence res = filter(apply(true,sprintf,{{"%x"},get_primes_le(500)}),palindrome) printf(1,"found %d: %s\n",{length(res),join(res)})
- Output:
found 13: 2 3 5 7 B D 11 101 151 161 191 1B1 1C1
Python
#!/usr/bin/python3
def isPrime(n):
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def reverse(text):
return text[::-1]
inicio = 2
final = 499
cont = 0
for i in range(inicio, final + 1):
hexi = hex(i)[2:] # Convert to hexadecimal and remove '0x' prefix
if isPrime(i) and hexi == reverse(hexi):
cont += 1
print(f"{hexi} ", end='')
print(f"\nEncontrados {cont} primos palindrómicos entre {inicio} y {final}")
- Output:
2 3 5 7 b d 11 101 151 161 191 1b1 1c1 Encontrados 13 primos palindrómicos entre 2 y 499
Quackery
See Palindromic primes#Quackery for rest of code. This is a trivial modification.
16 base put
500 times
[ i^ isprime if
[ i^ digits palindromic if
[ i^ echo sp ] ] ]
base release
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1
Raku
Trivial modification of Palindromic primes task.
say "{+$_} matching numbers:\n{.batch(10)».fmt('%3X').join: "\n"}"
given (^500).grep: { .is-prime and .base(16) eq .base(16).flip };
- Output:
13 matching numbers: 2 3 5 7 B D 11 101 151 161 191 1B1 1C1
REXX
Modules: How to use
Modules: Source code
-- 25 Mar 2025
include Settings
say 'PALINDROMIC PRIMES IN BASE 16'
say version
say
arg xx
if xx = '' then
xx = 1e5
call GetPrimes xx
call ShowPalindromes xx
exit
GetPrimes:
procedure expose prim. flag.
arg xx
call Time('r')
say 'Get primes up to' xx'...'
call Primes(xx)
say Format(Time('e'),,3) 'seconds'; say
return
ShowPalindromes:
procedure expose prim. flag.
arg xx
call Time('r')
say 'Palindromic primes base 16 up to' xx'...'
w = 6; n = 0
do i = 1 to prim.0
p = prim.i; q = Basenn(p,16); r = Reverse(q)
if q <> r then
iterate
s = Base10(r,16)
if flag.s then do
n = n+1
if xx <= 1e5 then do
call Charout ,Right(r,w)
if n//10 = 0 then
say
end
end
end
say
say n 'such numbers found'
say Format(Time('e'),,3) 'seconds'; say
return
include Sequences
include Functions
include Constants
include Abend
- Output:
PALINDROMIC PRIMES IN BASE 16 REXX-Regina_3.9.6(MT) 5.00 29 Apr 2024 Get primes up to 1E5... 0.022 seconds Palindromic primes base 16 up to 1E5... 2 3 5 7 B D 11 101 151 161 191 1B1 1C1 313 373 3B3 515 565 595 5D5 727 737 757 7F7 949 959 989 9A9 9D9 B1B B7B B9B BCB BFB D2D D3D D8D DBD DCD DFD F4F F7F FEF 10001 10601 11D11 12121 12521 12721 13531 13931 13E31 14141 14441 14741 14D41 15151 15451 15A51 15E51 16361 16C61 16F61 17071 17371 17671 17D71 18181 18581 69 such numbers found 0.018 seconds
Ring
load "stdlib.ring"
see "working..." + nl
see "Palindromic primes in base 16:" + nl
row = 0
limit = 500
for n = 1 to limit
hex = hex(n)
if ispalindrome(hex) and isprime(n)
see "" + upper(hex) + " "
row = row + 1
if row%5 = 0
see nl
ok
ok
next
see nl + "Found " + row + " palindromic primes in base 16" + nl
see "done..." + nl
- Output:
working... Palindromic primes in base 16: 2 3 5 7 B D 11 101 151 161 191 1B1 1C1 Found 13 palindromic primes in base 16 done...
RPL
« "" 1 PICK3 SIZE FOR j OVER j DUP SUB SWAP + NEXT NIP » 'REVSTR' STO « { } #2h WHILE DUP #500d ≤ REPEAT CASE DUP2 POS THEN END DUP B→R ISPRIME? THEN DUP →STR 3 OVER SIZE 1 - SUB IF DUP REVSTR == THEN SWAP OVER + SWAP END END END 1 + END DROP » 'TASK' STO
- Output:
1: { # 2h # 3h # 5h # 7h # Bh # Dh # 11h # 101h # 151h # 161h # 191h # 1B1h # 1C1h }
Ruby
res = Prime.each(500).filter_map do |pr|
str = pr.to_s(16)
str if str == str.reverse
end
puts res.join(", ")
- Output:
2, 3, 5, 7, b, d, 11, 101, 151, 161, 191, 1b1, 1c1
Rust
See Rust solution for task 'Palindromic Primes'.
Seed7
$ include "seed7_05.s7i";
const func boolean: isPrime (in integer: number) is func
result
var boolean: prime is FALSE;
local
var integer: upTo is 0;
var integer: testNum is 3;
begin
if number = 2 then
prime := TRUE;
elsif odd(number) and number > 2 then
upTo := sqrt(number);
while number rem testNum <> 0 and testNum <= upTo do
testNum +:= 2;
end while;
prime := testNum > upTo;
end if;
end func;
const proc: main is func
local
var integer: n is 0;
var string: hex is "";
begin
for n range 2 to 499 do
if isPrime(n) then
hex := n radix 16;
if hex = reverse(hex) then
write(hex <& " ");
end if;
end if;
end for;
end func;
- Output:
2 3 5 7 b d 11 101 151 161 191 1b1 1c1
Sidef
func palindromic_primes(upto, base = 10) {
var list = []
for (var p = 2; p <= upto; p = p.next_palindrome(base)) {
list << p if p.is_prime
}
return list
}
var list = palindromic_primes(500, 16)
list.each {|p|
say "#{'%3s' % p}_10 = #{'%3s' % p.base(16)}_16"
}
- Output:
2_10 = 2_16 3_10 = 3_16 5_10 = 5_16 7_10 = 7_16 11_10 = b_16 13_10 = d_16 17_10 = 11_16 257_10 = 101_16 337_10 = 151_16 353_10 = 161_16 401_10 = 191_16 433_10 = 1b1_16 449_10 = 1c1_16
Wren
import "./math" for Int
import "./fmt" for Conv, Fmt
System.print("Primes < 500 which are palindromic in base 16:")
var primes = Int.primeSieve(500)
var count = 0
for (p in primes) {
var hp = Conv.Itoa(p, 16)
if (hp == hp[-1..0]) {
Fmt.write("$3s ", hp)
count = count + 1
if (count % 5 == 0) System.print()
}
}
System.print("\n\nFound %(count) such primes.")
- Output:
Primes < 500 which are palindromic in base 16: 2 3 5 7 B D 11 101 151 161 191 1B1 1C1 Found 13 such primes.
XPL0
func IsPrime(N); \Return 'true' if N is a prime number
int N, I;
[if N <= 1 then return false;
for I:= 2 to sqrt(N) do
if rem(N/I) = 0 then return false;
return true;
];
func Reverse(N, Base); \Reverse order of digits in N for given Base
int N, Base, M;
[M:= 0;
repeat N:= N/Base;
M:= M*Base + rem(0);
until N=0;
return M;
];
int Count, N;
[SetHexDigits(1);
Count:= 0;
for N:= 0 to 500-1 do
if IsPrime(N) & N=Reverse(N, 16) then
[HexOut(0, N);
Count:= Count+1;
if rem(Count/10) = 0 then CrLf(0) else ChOut(0, 9\tab\);
];
CrLf(0);
IntOut(0, Count);
Text(0, " such numbers found.
");
]
- Output:
2 3 5 7 B D 11 101 151 161 191 1B1 1C1 13 such numbers found.
- Programming Tasks
- Prime Numbers
- 11l
- Action!
- Action! Sieve of Eratosthenes
- ALGOL 68
- ALGOL 68-primes
- AppleScript
- Arturo
- AWK
- BASIC
- BASIC256
- FreeBASIC
- QBasic
- QB64
- Yabasic
- C++
- Delphi
- SysUtils,StdCtrls
- EasyLang
- F Sharp
- Factor
- Go
- Go-rcu
- J
- Java
- Jq
- Julia
- Mathematica
- Wolfram Language
- Nim
- PascalABC.NET
- Perl
- Phix
- Python
- Quackery
- Raku
- REXX
- Ring
- RPL
- Ruby
- Rust
- Seed7
- Sidef
- Wren
- Wren-math
- Wren-fmt
- XPL0