Home » Reverse Prime Numbers

Reverse Prime Numbers

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
                    
                  

&&&

Leave a Reply