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
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 <cmath> #include <iostream> 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
<?php // PHP program to find sum of n and // it's largest prime factor // Function to return the sum of n // and it's largest prime factor function maxPrimeFactors( $n ) { $num = $n ; // Initialise maxPrime to -1. $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 ( $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. $sum = $maxPrime + $num ; return $sum ; } // Driver Code $n = 19; echo maxPrimeFactors( $n ); // This code is contributed // by inder_verma ?> |
Javascript
<script> // Javascript program to find sum of n and // it's largest prime factor // Function to return the sum of n // and it's largest prime factor function maxPrimeFactors(n) { var num = n; // Initialise maxPrime to -1. var maxPrime = -1; while (n % 2 == 0) { maxPrime = 2; n = parseInt(n/2); } // n must be odd at this point, // thus skip the even numbers and // iterate only odd numbers for ( var i = 3; i <= parseInt(Math.sqrt(n)); i += 2) { while (n % i == 0) { maxPrime = i; n = parseInt(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. var sum = maxPrime + num; return sum; } // Driver Code var n = 19; document.write(maxPrimeFactors(n)); // This code contributed by shikhasingrajput </script> |
38
Time Complexity: O(sqrtn*logn)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!