Related Articles

# Find next palindrome prime

• Difficulty Level : Medium
• Last Updated : 21 May, 2021

Find the smallest palindrome number which is prime too and greater then given number N.
Examples:

```Input : N = 7
Output :11
11 is the smallest palindrome prime which
is greater than N.

Input : N = 112
Output : 131```

A simple approach is to start a loop from N+1. For every number, check if it is palindrome and prime.
An efficient solution is based on below observations. All palindrome with even digits is multiple of 11.
We can prove as follow:
11 % 11 = 0
1111 % 11 = 0
111111 % 11 = 0
11111111 % 11 = 0
So:
1001 % 11 = (1111 – 11 * 10) % 11 = 0
100001 % 11 = (111111 – 1111 * 10) % 11 = 0
10000001 % 11 = (11111111 – 111111 * 10) % 11 = 0
For any palindrome with even digits:
abcddcba % 11
= (a * 10000001 + b * 100001 * 10 + c * 1001 * 100 + d * 11 * 1000) % 11
= 0
All palindrome with even digits is multiple of 11.
So among them, 11 is the only one prime
if (8 <= N <= 11) return 11
For other, we consider only palindrome with odd digits.

## C++

 `// CPP program to find next palindromic``// prime for a given number.``#include ``#include ``using` `namespace` `std;` `bool` `isPrime(``int` `num)``{``    ``if` `(num < 2 || num % 2 == 0)``        ``return` `num == 2;``    ``for` `(``int` `i = 3; i * i <= num; i += 2)``        ``if` `(num % i == 0)``            ``return` `false``;``    ``return` `true``;``}` `int` `primePalindrome(``int` `N)``{``    ``// if(8<=N<=11) return 11``    ``if` `(8 <= N && N <= 11)``        ``return` `11;` `    ``// generate odd length palindrome number``    ``// which will cover given constraint.``    ``for` `(``int` `x = 1; x < 100000; ++x) {``    ` `        ``string s = to_string(x), r(s.rbegin(), s.rend());``        ``int` `y = stoi(s + r.substr(1));``    ` `        ``// if y>=N and it is a prime number``        ``// then return it.``        ``if` `(y >= N && isPrime(y))``            ``return` `y;``    ``}` `    ``return` `-1;``}` `// Driver code``int` `main()``{``    ``cout << primePalindrome(112);``    ``return` `0;``}`

## Java

 `// Java program to find next palindromic``// prime for a given number.``import` `java.lang.*;``class` `Geeks {` `static` `boolean` `isPrime(``int` `num)``{``    ``if` `(num < ``2` `|| num % ``2` `== ``0``)``        ``return` `num == ``2``;``    ``for` `(``int` `i = ``3``; i * i <= num; i += ``2``)``        ``if` `(num % i == ``0``)``            ``return` `false``;``    ``return` `true``;``}` `static` `int` `primePalindrome(``int` `N)``{``    ``// if(8<=N<=11) return 11``    ``if` `(``8` `<= N && N <= ``11``)``        ``return` `11``;` `    ``// generate odd length palindrome number``    ``// which will cover given constraint.``    ``for` `(``int` `x = ``1``; x < ``100000``; ++x) {``    ` `        ``String s = Integer.toString(x);``        ``StringBuffer buffer = ``new` `StringBuffer(s);``        ``buffer.reverse();``        ` `        ``int` `y = Integer.parseInt(s +``        ``buffer.substring(``1``).toString());``    ` `        ``// if y>=N and it is a prime number``        ``// then return it.``        ``if` `(y >= N && isPrime(y) == ``true``)``            ``return` `y;``    ``}` `    ``return` `-``1``;``}` `// Driver code``public` `static` `void` `main(String args[])``{``    ``System.out.print(primePalindrome(``112``));` `}``}`

## Python3

 `# Python3 program to find next palindromic``# prime for a given number.``import` `math as mt` `def` `isPrime(num):` `    ``if` `(num < ``2` `or` `num ``%` `2` `=``=` `0``):``        ``return` `num ``=``=` `2``    ``for` `i ``in` `range``(``3``, mt.ceil(mt.sqrt(num ``+` `1``))):``        ``if` `(num ``%` `i ``=``=` `0``):``            ``return` `False``    ``return` `True` `def` `primePalindrome(N):` `    ``# if(8<=N<=11) return 11``    ``if` `(``8` `<``=` `N ``and` `N <``=` `11``):``        ``return` `11` `    ``# generate odd length palindrome number``    ``# which will cover given constraint.``    ``for` `x ``in` `range``(``1``, ``100000``):``    ` `        ``s ``=` `str``(x)``        ``d ``=` `s[::``-``1``]``        ``y ``=` `int``(s ``+` `d[``1``:])``    ` `        ``# if y>=N and it is a prime number``        ``# then return it.``        ``if` `(y >``=` `N ``and` `isPrime(y)):``            ``return` `y``    ` `# Driver code``print``(primePalindrome(``112``))` `# This code is contributed by``# Mohit kumar 29`

## C#

 `// C# program to find next palindromic``// prime for a given number.``using` `System;``using` `System.Text;``using` `System.Collections;` `class` `Geeks {` `static` `bool` `isPrime(``int` `num)``{``    ``if` `(num < 2 || num % 2 == 0)``        ``return` `num == 2;``    ``for` `(``int` `i = 3; i * i <= num; i += 2)``        ``if` `(num % i == 0)``            ``return` `false``;``    ``return` `true``;``}` `static` `int` `primePalindrome(``int` `N)``{``    ``// if(8<=N<=11) return 11``    ``if` `(8 <= N && N <= 11)``        ``return` `11;` `    ``// generate odd length palindrome number``    ``// which will cover given constraint.``    ``for` `(``int` `x = 1; x < 100000; ++x) {``    ` `        ``string` `s = x.ToString();``        ``char``[] buffer = s.ToCharArray();``        ``Array.Reverse(buffer);``        ` `        ``int` `y = Int32.Parse(s + ``new` `string``(buffer).Substring(1));``    ` `        ``// if y>=N and it is a prime number``        ``// then return it.``        ``if` `(y >= N && isPrime(y) == ``true``)``            ``return` `y;``    ``}` `    ``return` `-1;``}` `// Driver code``public` `static` `void` `Main()``{``    ``Console.WriteLine(primePalindrome(112));``}``}` `// This code is contributed by Mithun Kumar.`

## PHP

 `=N and it is a prime number``        ``// then return it.``        ``if` `(``\$y` `>= ``\$N` `&& isPrime(``\$y``) == true)``            ``return` `\$y``;``    ``}` `    ``return` `-1;``}` `// Driver code``print``(primePalindrome(112));` `// This code is contributed by mits``?>`

## Javascript

 ``
Output:
`131`

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up