Related Articles
Largest palindrome which is product of two n-digit numbers
• Difficulty Level : Medium
• Last Updated : 05 Feb, 2021

Given a value n, find out the largest palindrome number which is product of two n digit numbers.

Examples :

```Input  : n = 2
Output : 9009
9009 is the largest number which is product of two
2-digit numbers. 9009 = 91*99.

Input : n = 3
Output : 906609```

Below are steps to find the required number.

1. Find a lower limit on n digit numbers. For example, for n = 2, lower_limit is 10.
2. Find an upper limit on n digit numbers. For example, for n = 2, upper_limit is 99.
3. Consider all pairs of numbers where ever number lies in range [lower_limit, upper_limit]

Below is the implementation of above steps.

## C++

 `// C++ problem to find out the``// largest palindrome number which``// is product of two n digit numbers``#include ``using` `namespace` `std;` `// Function to calculate largest``// palindrome which is product of``// two n-digits numbers``int` `larrgestPalindrome(``int` `n)``{``    ``int` `upper_limit = ``pow``(10,n) - 1;` `   `  `    ``// largest number of n-1 digit.``    ``// One plus this number is lower``    ``// limit which is product of two numbers.``    ``int` `lower_limit = 1 + upper_limit / 10;` `    ``// Initialize result``    ``int` `max_product = 0;``    ``for` `(``int` `i = upper_limit;``             ``i >= lower_limit;``             ``i--)``    ``{``        ``for` `(``int` `j = i; j >= lower_limit; j--)``        ``{``            ``// calculating product of``            ``// two n-digit numbers``            ``int` `product = i * j;``            ``if` `(product < max_product)``                ``break``;``            ``int` `number = product;``            ``int` `reverse = 0;` `            ``// calculating reverse of``            ``// product to check whether``            ``// it is palindrome or not``            ``while` `(number != 0)``            ``{``                ``reverse = reverse * 10 +``                          ``number % 10;``                ``number /= 10;``            ``}` `            ``// update new product if exist``            ``// and if greater than previous one``            ``if` `(product == reverse &&``                ``product > max_product)``                ` `                ``max_product = product;``        ``}``    ``}``    ``return` `max_product;``}` `// Driver code``int` `main()``{``    ``int` `n = 2;``    ``cout << larrgestPalindrome(n);``    ``return` `0;``}`

## Java

 `// Java problem to find out the``// largest palindrome number``// which is product of two``// n digit numbers.``import` `java.lang.Math;` `class` `GFG``{``    ``// Function to calculate largest``    ``// palindrome which isproduct of``    ``// two n-digits numbers``    ``static` `int` `larrgestPalindrome(``int` `n)``    ``{``        ``int` `upper_limit = (``int``)Math.pow(``10``, n) - ``1``;``    ` `    ` `        ``// largest number of n-1 digit.``        ``// One plus this number``        ``// is lower limit which is``        ``// product of two numbers.``        ``int` `lower_limit = ``1` `+ upper_limit / ``10``;``    ` `        ``// Initialize result``        ``int` `max_product = ``0``;``        ` `        ``for` `(``int` `i = upper_limit; i >= lower_limit; i--)``        ``{``            ``for` `(``int` `j = i; j >= lower_limit; j--)``            ``{``                ``// calculating product of two``                ``// n-digit numbers``                ``int` `product = i * j;``                ``if` `(product < max_product)``                    ``break``;``                ``int` `number = product;``                ``int` `reverse = ``0``;``    ` `                ``// calculating reverse of product``                ``// to check whether it is``                ``// palindrome or not``                ``while` `(number != ``0``)``                ``{``                    ``reverse = reverse * ``10` `+ number % ``10``;``                    ``number /= ``10``;``                ``}``    ` `                ``// update new product if exist and if``                ``// greater than previous one``                ``if` `(product == reverse && product > max_product)``                    ``max_product = product;``            ``}``        ``}``        ``return` `max_product;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `main (String[] args)``    ``{``    ` `        ``int` `n = ``2``;``        ``System.out.print(larrgestPalindrome(n));``    ``}``}` `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python problem to find``# out the largest palindrome``# number which is product of``# two n digit numbers.` `# Function to calculate largest``# palindrome which is``#  product of two n-digits numbers``   ` `def` `larrgestPalindrome(n):` `    ``upper_limit ``=` `(``10``*``*``(n))``-``1``     ` `    ``# largest number of n-1 digit.``    ``# One plus this number``    ``# is lower limit which is``    ``# product of two numbers.``    ``lower_limit ``=` `1` `+` `upper_limit``/``/``10`` ` `    ``max_product ``=` `0` `# Initialize result``    ``for` `i ``in` `range``(upper_limit,lower_limit``-``1``, ``-``1``):``    ` `        ``for` `j ``in` `range``(i,lower_limit``-``1``,``-``1``):``        ` `            ``# calculating product of``            ``# two n-digit numbers``            ``product ``=` `i ``*` `j``            ``if` `(product < max_product):``                ``break``            ``number ``=` `product``            ``reverse ``=` `0`` ` `            ``# calculating reverse of``            ``# product to check``            ``# whether it is palindrome or not``            ``while` `(number !``=` `0``):``            ` `                ``reverse ``=` `reverse ``*` `10` `+` `number ``%` `10``                ``number ``=``number ``/``/` `10``            ` ` ` `             ``# update new product if exist and if``             ``# greater than previous one``            ``if` `(product ``=``=` `reverse ``and` `product > max_product):``                ``max_product ``=` `product``        ` `    ` `    ``return` `max_product` `# Driver code` `n ``=` `2``print``(larrgestPalindrome(n))` `# This code is contributed``# by Anant Agarwal.`

## C#

 `// C# problem to find out the``// largest palindrome number``// which is product of two``// n digit numbers.``using` `System;` `class` `GFG``{``    ``// Function to calculate largest``    ``// palindrome which isproduct of``    ``// two n-digits numbers``    ``static` `int` `larrgestPalindrome(``int` `n)``    ``{``        ``int` `upper_limit = (``int``)Math.Pow(10, n) - 1;``    ` `    ` `        ``// largest number of n-1 digit.``        ``// One plus this number``        ``// is lower limit which is``        ``// product of two numbers.``        ``int` `lower_limit = 1 + upper_limit / 10;``    ` `        ``// Initialize result``        ``int` `max_product = 0;``        ` `        ``for` `(``int` `i = upper_limit; i >= lower_limit; i--)``        ``{``            ``for` `(``int` `j = i; j >= lower_limit; j--)``            ``{``                ``// calculating product of two``                ``// n-digit numbers``                ``int` `product = i * j;``                ``if` `(product < max_product)``                    ``break``;``                ``int` `number = product;``                ``int` `reverse = 0;``    ` `                ``// calculating reverse of product``                ``// to check whether it is``                ``// palindrome or not``                ``while` `(number != 0)``                ``{``                    ``reverse = reverse * 10 + number % 10;``                    ``number /= 10;``                ``}``    ` `                ``// update new product if exist and if``                ``// greater than previous one``                ``if` `(product == reverse && product > max_product)``                    ``max_product = product;``            ``}``        ``}``        ``return` `max_product;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main ()``    ``{``    ` `        ``int` `n = 2;``        ``Console.Write(larrgestPalindrome(n));``    ``}``}` `// This code is contributed by nitin mittal.`

## PHP

 `= ``\$lower_limit``;``         ``\$i``--)``    ``{``        ``for` `(``\$j` `= ``\$i``;``             ``\$j` `>= ``\$lower_limit``;``             ``\$j``--)``        ``{``            ``// calculating product of``            ``// two n-digit numbers``            ``\$product` `= ``\$i` `* ``\$j``;``            ``if` `(``\$product` `< ``\$max_product``)``                ``break``;``            ``\$number` `= ``\$product``;``            ``\$reverse` `= 0;` `            ``// calculating reverse of``            ``// product to check whether``            ``// it is palindrome or not``            ``while` `(``\$number` `!= 0)``            ``{``                ``\$reverse` `= ``\$reverse` `* 10 +``                           ``\$number` `% 10;``                ``\$number` `= (int)(``\$number` `/ 10);``            ``}` `            ``// update new product if exist``            ``// and if greater than previous one``            ``if` `(``\$product` `== ``\$reverse` `&&``                ``\$product` `> ``\$max_product``)``                ` `                ``\$max_product` `= ``\$product``;``        ``}``    ``}``    ``return` `\$max_product``;``}` `// Driver code``\$n` `= 2;``echo``(larrgestPalindrome(``\$n``));` `// This code is contributed by Ajit.``?>`

Output :

`9009`

The approach used in this post is simple and straightforward. Please comment if you find a better approach.