Related Articles
Find sum of a number and its maximum prime factor
• Last Updated : 17 Dec, 2018

Given an integer N, the task is to find the sum of N and it’s maximum prime factor.

Examples:

Input: 19
Output: 38
Maximum prime factor of 19 is 19.
Hence, 19 + 19 = 38

Input: 8
Output: 10
8 + 2 = 10

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Find the largest prime factor of the number and store it in maxPrimeFact then print the value of N + maxPrimeFact.

Below is the implementation of the above approach:

## C++

 `// C++ program to find sum of n and ``// it's largest prime factor``#include ``#include ``using` `namespace` `std;`` ` `// Function to return the sum of n and ``// it's largest prime factor``int` `maxPrimeFactors(``int` `n)``{``    ``int` `num = n;`` ` `    ``// Initialise maxPrime to -1.``    ``int` `maxPrime = -1;`` ` `    ``while` `(n % 2 == 0) {``        ``maxPrime = 2;``        ``n /= 2;``    ``}`` ` `    ``// n must be odd at this point, thus skip``    ``// the even numbers and iterate only odd numbers``    ``for` `(``int` `i = 3; i <= ``sqrt``(n); i += 2) {``        ``while` `(n % i == 0) {``            ``maxPrime = i;``            ``n = n / i;``        ``}``    ``}`` ` `    ``// This condition is to handle the case``    ``// when n is a prime number greater  than 2``    ``if` `(n > 2)``        ``maxPrime = n;`` ` `    ``// finally return the sum.``    ``int` `sum = maxPrime + num;``    ``return` `sum;``}`` ` `// Driver Program to check the above function.``int` `main()``{``    ``int` `n = 19;`` ` `    ``cout << maxPrimeFactors(n);``    ``return` `0;``}`

## Java

 `// Java program to find sum of n and``// it's largest prime factor``import` `java.io.*;`` ` `class` `GFG``{`` ` `// Function to return the sum of n``// and it's largest prime factor``static` `int` `maxPrimeFactors(``int` `n)``{``int` `num = n;`` ` `// Initialise maxPrime to -1.``int` `maxPrime = -``1``;`` ` `while` `(n % ``2` `== ``0``)``{``maxPrime = ``2``;``n /= ``2``;``}`` ` `// n must be odd at this point,``// thus skip the even numbers and``// iterate only odd numbers``for` `(``int` `i = ``3``; i <= Math.sqrt(n); i += ``2``) {``     ` `    ``while` `(n % i == ``0``) { ``        ``maxPrime = i; n = n / i;``        ``} ``     ` `} ``        ``// This condition is to handle the case ``        ``// when n is a prime number greater than 2 ``        ``if` `(n > ``2``) {``            ``maxPrime = n;``        ``}``// finally return the sum.``int` `sum = maxPrime + num;``return` `sum;``}`` ` `// Driver Code``public` `static` `void` `main (String[] args)``{``int` `n = ``19``;`` ` `System.out.println(maxPrimeFactors(n));``}``}``// This code is contributed by anuj_67`

## Python3

 `# Python 3 program to find sum of n and ``# it's largest prime factor``from` `math ``import` `sqrt`` ` `# Function to return the sum of n and ``# it's largest prime factor``def` `maxPrimeFactors(n):``    ``num ``=` `n`` ` `    ``# Initialise maxPrime to -1.``    ``maxPrime ``=` `-``1``;`` ` `    ``while` `(n ``%` `2` `=``=` `0``):``        ``maxPrime ``=` `2``        ``n ``=` `n ``/` `2``     ` `    ``# n must be odd at this point, thus skip``    ``# the even numbers and iterate only odd numbers``    ``p ``=` `int``(sqrt(n) ``+` `1``)``    ``for` `i ``in` `range``(``3``, p, ``2``):``        ``while` `(n ``%` `i ``=``=` `0``):``            ``maxPrime ``=` `i``            ``n ``=` `n ``/` `i``         ` `    ``# This condition is to handle the case``    ``# when n is a prime number greater than 2``    ``if` `(n > ``2``):``        ``maxPrime ``=` `n`` ` `    ``# finally return the sum.``    ``sum` `=` `maxPrime ``+` `num``    ``return` `sum`` ` `# Driver Code``if` `__name__ ``=``=` `'__main__'``:``    ``n ``=` `19`` ` `    ``print``(maxPrimeFactors(n))`` ` `# This code is contributed by ``# Surendra_Gangwar`

## C#

 `// C# program to find sum of n and``// it's largest prime factor``using` `System;`` ` `class` `GFG``{``// Function to return the sum of n``// and it's largest prime factor``static` `int` `maxPrimeFactors(``int` `n)``{``int` `num = n;`` ` `// Initialise maxPrime to -1.``int` `maxPrime = -1;`` ` `while` `(n % 2 == 0)``{``    ``maxPrime = 2;``    ``n /= 2;``}`` ` `// n must be odd at this point,``// thus skip the even numbers and``// iterate only odd numbers``for` `(``int` `i = 3; ``         ``i <= Math.Sqrt(n); i += 2) ``{``     ` `    ``while` `(n % i == 0) ``    ``{ ``        ``maxPrime = i; n = n / i;``    ``} ``     ` `} `` ` `// This condition is to handle the case ``// when n is a prime number greater than 2 ``if` `(n > 2) ``{``    ``maxPrime = n;``}`` ` `// finally return the sum.``int` `sum = maxPrime + num;``return` `sum;``}`` ` `// Driver Code``static` `void` `Main ()``{``    ``int` `n = 19;``     ` `    ``Console.WriteLine(maxPrimeFactors(n));``}``}`` ` `// This code is contributed by Ryuga`

## PHP

 ` 2)``        ``\$maxPrime` `= ``\$n``;`` ` `    ``// finally return the sum.``    ``\$sum` `= ``\$maxPrime` `+ ``\$num``;``    ``return` `\$sum``;``}`` ` `// Driver Code``\$n` `= 19;`` ` `echo` `maxPrimeFactors(``\$n``);`` ` `// This code is contributed ``// by inder_verma``?>`
Output:
```38
```
Want to learn from the best curated videos and practice problems, check out the C++ Foundation Course for Basic to Advanced C++ and C++ STL Course for foundation plus STL.  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