Open In App

# Reverse and Add given number repeatedly to get a Palindrome number

Write a program that takes number and gives the resulting palindrome (if one exists). If it took more than 1, 000 iterations (additions) or yield a palindrome that is greater than 4, 294, 967, 295, assume that no palindrome exist for the given number.

Examples:

Input: N = 195 Output: 9339 Input: N = 265 Output: 45254 Input: N = 196 Output: No palindrome exist

Approach: Create a reverse and add function to start with a number, reverses its digits, and adds the reverse to the original. If the sum is not a palindrome, repeat this procedure until it does.

## C++

 `// C++ Program to implement reverse and add function``#include ``using` `namespace` `std;` `/* Iterative function to reverse digits of num*/``long` `long` `reverse Digits(``long` `long` `num)``{``    ``long` `long` `rev_num = 0;``    ``while` `(num > 0) {``        ``rev_num = rev_num * 10 + num % 10;``        ``num = num / 10;``    ``}``    ``return` `rev_num;``}` `/* Function to check whether the``number is palindrome or not */``bool` `isPalindrome(``long` `long` `num)``{``    ``return` `(reverse Digits(num) == num);``}` `/* Reverse and Add Function */``void` `ReverseandAdd(``long` `long` `num)``{``    ``long` `long` `rev_num = 0;``    ``while` `(num <= 4294967295) {``        ``// Reversing the digits of the number``        ``rev_num = reverse Digits(num);` `        ``// Adding the reversed number``        ``// with the original``        ``num``            ``= num + rev_num;` `        ``// Checking whether the number``        ``// is palindrome or not``        ``if` `(isPalindrome(num)) {``            ``printf``(``"%lld\n"``, num);``            ``break``;``        ``}``        ``else` `if` `(num > 4294967295) {``            ``printf``(``"No palindrome exist"``);``        ``}``    ``}``}` `// Driver Program``int` `main()``{``    ``ReverseandAdd(195);``    ``ReverseandAdd(265);``    ``return` `0;``}`

## Java

 `// Java Program to implement reverse and add function``public` `class` `ReverseAdd {``    ``/* Iterative function to reverse digits of num*/``    ``long` `revers eDigits(``long` `num)``    ``{``        ``long` `rev_num = ``0``;``        ``while` `(num > ``0``) {``            ``rev_num = rev_num * ``10` `+ num % ``10``;``            ``num = num / ``10``;``        ``}``        ``return` `rev_num;``    ``}` `    ``/* Function to check whether he number is``           ``palindrome or not */``    ``boolean` `isPalindrome(``long` `num)``    ``{``        ``return` `(reverseDigits(num) == num);``    ``}` `    ``/* Reverse and Add Function */``    ``void` `ReverseandAdd(``long` `num)``    ``{``        ``long` `rev_num = ``0``;``        ``while` `(num <= 4294967295l) {``            ``// Reversing the digits of the number``            ``rev_num = reverseDigits(num);` `            ``// Adding the reversed number``            ``// with the original``            ``num``                ``= num + rev_num;` `            ``// Checking whether the number``            ``// is palindrome or not``            ``if` `(isPalindrome(num)) {``                ``System.out.println(num);``                ``break``;``            ``}``            ``else` `if` `(num > 4294967295l) {``                ``System.out.println(``"No palindrome exist"``);``            ``}``        ``}``    ``}` `    ``// Main method``    ``public` `static` `void` `main(String[] args)``    ``{``        ``ReverseAdd ob = ``new` `ReverseAdd();``        ``ob.ReverseandAdd(195l);``        ``ob.ReverseandAdd(265l);``    ``}``}`

## Python3

 `# Python Program to implement reverse and add function` `# Iterative function to reverse digits of num``def` `reverse Digits(num):``    ``rev_num ``=` `0``    ``while` `(num > ``0``):``        ``rev_num ``=` `rev_num ``*` `10` `+` `num ``%` `10``        ``num ``=` `num``/``/``10``    ``return` `rev_num` `# Function to check whether``# the number is palindrome or not``def` `isPalindrome(num):``    ``return` `(reverse Digits(num) ``=``=` `num)` `# Reverse and Add Function``def` `ReverseandAdd(num):``    ``rev_num ``=` `0``    ``while` `(num <``=` `4294967295``):``        ``# Reversing the digits of the number``        ``rev_num ``=` `reverse Digits(num)` `        ``# Adding the reversed number``        ``# with the original``        ``num ``=` `num ``+` `rev_num` `        ``# Checking whether the number``        ``# is palindrome or not``        ``if``(isPalindrome(num)):``            ``print` `(num)``            ``break``        ``else``:``            ``if` `(num > ``4294967295``):``                ``print` `(``"No palindrome exist"``)` `# Driver Code``ReverseandAdd(``195``)``ReverseandAdd(``265``)`

## C#

 `// C# Program to implement reverse and add function``using` `System;` `class` `GFG {``    ``/* Iterative function to reverse digits of num*/``    ``static` `long` `reverse Digits(``long` `num)``    ``{``        ``long` `rev_num = 0;``        ``while` `(num > 0) {``            ``rev_num = rev_num * 10 + num % 10;``            ``num = num / 10;``        ``}``        ``return` `rev_num;``    ``}` `    ``/* Function to check whether he number is``        ``palindrome or not */``    ``static` `bool` `isPalindrome(``long` `num)``    ``{``        ``return` `(reverse Digits(num) == num);``    ``}` `    ``/* Reverse and Add Function */``    ``static` `void` `ReverseandAdd(``long` `num)``    ``{``        ``long` `rev_num = 0;``        ``while` `(num <= 4294967295) {``            ``// Reversing the digits of the number``            ``rev_num = reverse Digits(num);` `            ``// Adding the reversed number``            ``// with the original``            ``num = num + rev_num;` `            ``// Checking whether the number``            ``// is palindrome or not``            ``if` `(isPalindrome(num)) {``                ``Console.WriteLine(num);``                ``break``;``            ``}``            ``else` `if` `(num > 4294967295) {``                ``Console.WriteLine(``"No palindrome exist"``);``            ``}``        ``}``    ``}` `    ``// Driver code``    ``public` `static` `void` `Main()``    ``{``        ``ReverseandAdd(195);``        ``ReverseandAdd(265);``    ``}``}` `// This code is contributed by chandan_jnu`

## PHP

 ` 0)``    ``{``        ``\$rev_num` `= ``\$rev_num` `* 10 + ``\$num` `% 10;``        ``\$num` `= (int)(``\$num` `/ 10);``    ``}``    ``return` `\$rev_num``;``}` `/* Function to check whether he number``   ``is palindrome or not */``function` `isPalindrome(``\$num``)``{``    ``return` `(reverse Digits(``\$num``) == ``\$num``);``}` `/* Reverse and Add Function */``function` `ReverseandAdd(``\$num``)``{``     ``\$rev_num` `= 0;``    ``while` `(``\$num` `<= 4294967295)``    ``{``        ``// Reversing the digits of the number``        ``\$rev_num` `= reverse Digits(``\$num``);` `        ``// Adding the reversed number with``        ``// the original``        ``\$num` `= ``\$num` `+ ``\$rev_num``;` `        ``// Checking whether the number is``        ``// palindrome or not``        ``if` `(isPalindrome(``\$num``))``        ``{``            ``print``(``\$num` `. ``"\n"``);``            ``break``;``        ``}``        ``else` `if` `(``\$num` `> 4294967295)``        ``{``            ``print``(``"No palindrome exist"``);``        ``}``    ``}``}` `// Driver Code``ReverseandAdd(195);``ReverseandAdd(265);` `// This code is contributed by chandan_jnu``?>`

## Javascript

 ``

Output:

```9339
45254```

Time complexity: O(log N) for a given input

Auxiliary space: O(1) because constant variables have been used

This article is contributed by Rahul Agrawal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.