# Find sum of a number and its maximum prime factor

Last Updated : 08 Jul, 2022

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:
Output: 10
8 + 2 = 10

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` `?>`

## Javascript

 ``

Output:

`38`

Time Complexity: O(sqrtn*logn)

Auxiliary Space: O(1)

Previous
Next