Given is a list of prime numbers. List those prime numbers which after reversal remain prime numbers. Ex. 337 is a prime number. Reversed number 733 is also a prime number.
📌 Challenge Details and Links
ExcelBI Excel Challenge Number: 170
Challenge Difficulty: ⭐️⭐️⭐️
📥Download Sample File
📥Link to the solutions on LinkedIn
Solving the challenge of Reverse Prime Numbers with Power Query
Power Query solution 1 for Reverse Prime Numbers, proposed by Bo Rydobon 🇹🇭:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Ans = Table.SelectRows(
Source,
each
let
n = Number.From(Text.Reverse(Text.From([Number])))
in
List.AllTrue(
List.Transform({2 .. Number.IntegerDivide(Number.Sqrt(n), 1)}, each Number.Mod(n, _) > 0)
)
)
in
Ans
Power Query solution 2 for Reverse Prime Numbers, proposed by Zoran Milokanović:
let
Source = Excel.CurrentWorkbook(){[Name = "Input"]}[Content],
Solution = List.Select(
Source[Number],
each
let
n = Number.From(Text.Reverse(Text.From(_)))
in
List.Accumulate(
{2 .. Number.RoundDown(Number.Sqrt(n))},
false,
(s, d) => s or (Number.Mod(n, d) = 0)
)
= false
)
in
Solution
Power Query solution 3 for Reverse Prime Numbers, proposed by Aditya Kumar Darak 🇮🇳:
let
MyFun = (Number as number) as logical =>
let
Sqrt = Number.Sqrt(Number),
Int = Number.IntegerDivide(Sqrt, 1),
List = {2 .. Int},
T = List.Transform(List, each Number.Mod(Number, _)),
R = List.Min(T) <> 0
in
R,
Source = Excel.CurrentWorkbook(){[Name = "data"]}[Content],
Return = Table.SelectRows(Source, each MyFun(Number.From(Text.Reverse(Text.From([Number])))))
in
Return
Power Query solution 4 for Reverse Prime Numbers, proposed by Alejandro Simón 🇵🇦 🇪🇸:
let
Source = Excel.CurrentWorkbook(){[Name = "Table1"]}[Content],
Sol = Table.SelectRows(
Table.AddColumn(
Source,
"Reverse",
each
let
a = Number.From(Text.Combine(List.Reverse(Text.ToList(Text.From([Number]))), "")),
b = List.Count(
List.Select(
List.Transform({1 .. a}, (x) => a / x - Number.RoundDown(a / x)),
(y) => y = 0
)
)
in
b
),
each [Reverse] = 2
)[[Number]]
in
Sol
Power Query solution 5 for Reverse Prime Numbers, proposed by Luan Rodrigues:
let
Fonte = Tabela1,
tab = Table.AddColumn(Fonte, "Number_P", each Number.From(Text.Reverse(Text.From([Number])))),
primos = List.Select(
tab[Number_P],
each
let
num = _
in
List.IsEmpty(
List.Select(
{2 .. Number.RoundDown(Number.Sqrt(num))},
each Number.Mod(num, Number.From(_)) = 0
)
)
),
res = Table.SelectRows(tab, each List.Contains(primos, [Number_P]))[[Number]]
in
res
Power Query solution 6 for Reverse Prime Numbers, proposed by Alexis Olson:
Table.SelectRows(
each List.Contains(
Csv.Document(Web.Contents("https://oeis.org/A006567/b006567.txt"), [Delimiter = " "])[Column2],
Text.Reverse(Number.ToText([Number]))
)
)
Power Query solution 7 for Reverse Prime Numbers, proposed by Brian Julius:
let
Source = #"Table Raw",
AddReversed = Table.AddColumn(Source, "Reversed", each Text.Reverse([Number])),
ChangeType = Table.TransformColumnTypes(AddReversed, {{"Reversed", Int64.Type}}),
RunRPrimes = R.Execute(
"library(primes)#(lf)df <- dataset#(lf)df$isprime <- is_prime(df$Reversed)#(lf)df",
[dataset = ChangeType]
),
df = RunRPrimes{[Name = "df"]}[Value],
Filter = Table.RenameColumns(
Table.SelectColumns(Table.SelectRows(df, each ([isprime] = true)), "Number"),
{"Number", "Answer Expected"}
)
in
Filter
Solving the challenge of Reverse Prime Numbers with Excel
Excel solution 1 for Reverse Prime Numbers, proposed by Bo Rydobon 🇹🇭:
=FILTER(A2:A9,MAP(A2:A9,LAMBDA(a,LET(n,CONCAT(MID(a,LEN(a)+1-SEQUENCE(LEN(a)),1)),AND(MOD(n,SEQUENCE(n^0.5,,2)))))))
Excel solution 2 for Reverse Prime Numbers, proposed by محمد حلمي:
=FILTER(A2:A9,MAP(A2:A9,LAMBDA(a,LET(
r,CONCAT(MID(a,LEN(a)-SEQUENCE(LEN(a))+1,1)),
v,r/SEQUENCE(r),
COUNT(IF(v=INT(v),v,""))=2))))
Excel solution 3 for Reverse Prime Numbers, proposed by Kris Jaganah:
=FILTER(A2:A9,MAP(A2:A9,LAMBDA(x,LET(a,LEN(x),b,CONCAT(MID(x,SEQUENCE(a,,a,-1),1)),MIN(MOD(b/SEQUENCE(b-2,,2),1)))))>0)
Excel solution 4 for Reverse Prime Numbers, proposed by Julian Poeltl:
=FILTER(A2:A9,MAP(A2:A9,LAMBDA(N,LET(L,LEN(N),R,CONCAT(MID(N,SEQUENCE(L,,L,-1),1)),SUM(--(MOD(R/SEQUENCE(R^1/2),1)=0))=1))))
Excel solution 5 for Reverse Prime Numbers, proposed by Timothée BLIOT:
=FILTER(A2:A9,MAP(A2:A9, LAMBDA(t, LET(D, LAMBDA(n, IF(n<5,2,VSTACK(2,SEQUENCE(ROUNDDOWN(((n^0.5)-3),0)/2+1,,3,2)))),
P, LAMBDA(x, LET(A, D(x), SWITCH(x,1,0,2,1,--(SUM(MAP(A, LAMBDA(a, --(MOD(x,a)=0) )))=0) ) )),
B, CONCAT(MID(t,SEQUENCE(LEN(t),,LEN(t),-1),1))*1, P(B) )) ))
Excel solution 6 for Reverse Prime Numbers, proposed by Md. Zohurul Islam:
=LET(u,A2:A9,
v,MAP(u,LAMBDA(x,LET(sq,SEQUENCE(LEN(x)),ABS(CONCAT(SORTBY(MID(x,sq,1),sq,-1)))))),
w,MAP(v,LAMBDA(y,SUM(ABS(MOD(y,DROP(SEQUENCE(,y),,1))=0)))),
z,FILTER(u,w=1),
z)
Excel solution 7 for Reverse Prime Numbers, proposed by Julien Lacaze:
=LET(values,A5:A11,
reverted,MAP(values,LAMBDA(arr,CONCAT(MID(arr,SEQUENCE(LEN(arr),,LEN(arr),-1),1)))),
checkout,MAP(reverted,LAMBDA(arr,--OR(MOD(arr,6)=1,MOD(arr,6)=5))),
FILTER(values,checkout))
Excel solution 8 for Reverse Prime Numbers, proposed by Guillermo Arroyo:
=FILTER(A2:A9,MAP(A2:A9,LAMBDA(a,LET(n,CONCAT(MID(a,SEQUENCE(15,,15,-1),1)),AND(MOD(n,SEQUENCE(SQRT(n),,2)))))))
Solving the challenge of Reverse Prime Numbers with Python in Excel
Python in Excel solution 1 for Reverse Prime Numbers, proposed by Alejandro Campos:
from sympy import isprime
i = [int(str(n)[::-1]) for n in xl("A2:A9")[0] if isprime(n) and isprime(int(str(n)[::-1]))]
[int(str(m)[::-1]) for m in i]
Solving the challenge of Reverse Prime Numbers with Excel VBA
Excel VBA solution 1 for Reverse Prime Numbers, proposed by Vasin Nilyok:
Sub ReversedPrime()
Dim NumCal As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
rAns = 2
For r = 2 To LastRow
NumQ = Cells(r, 1)
LenNumQ = Len(NumQ)
RevNum = Empty
For i = LenNumQ To 1 Step -1
iAdded = Mid(NumQ, i, 1)
RevNum = RevNum & iAdded
Next i
NumCal = RevNum
CheckPrime = 0
For iDiv = 2 To Sqr(NumCal)
If NumCal Mod iDiv = 0 Then
CheckPrime = CheckPrime + 1
End If
Next iDiv
If CheckPrime = 0 Then
Cells(rAns, 3) = NumQ
rAns = rAns + 1
End If
CheckPrime = Empty
Next r
End Sub
&&&
