# Find largest prime factor of a number

• Difficulty Level : Medium
• Last Updated : 13 Jan, 2022

Given a positive integer ‘n'( 1 <= n <= 1015). Find the largest prime factor of a number.

Input: 6
Output: 3
Explanation
Prime factor of 6 are- 2, 3
Largest of them is '3'

Input: 15
Output: 5

The approach is simple, just factorise the given number by dividing it with the divisor of a number and keep updating the maximum prime factor. See this to understand more.

## C++

 // C++ Program to find largest prime// factor of number#include #includeusing namespace std; // A function to find largest prime factorlong long maxPrimeFactors(long long n){    // Initialize the maximum prime factor    // variable with the lowest one    long long maxPrime = -1;     // Print the number of 2s that divide n    while (n % 2 == 0) {        maxPrime = 2;        n >>= 1; // equivalent to n /= 2    }  // n must be odd at this point     while (n % 3 == 0) {        maxPrime = 3;        n=n/3;    }     // now we have to iterate only for integers    // who does not have prime factor 2 and 3    for (int i = 5; i <= sqrt(n); i += 6) {        while (n % i == 0) {            maxPrime = i;            n = n / i;        }      while (n % (i+2) == 0) {            maxPrime = i+2;            n = n / (i+2);        }    }     // This condition is to handle the case    // when n is a prime number greater than 4    if (n > 4)        maxPrime = n;     return maxPrime;} // Driver program to test above functionint main(){    long long n = 15;    cout << maxPrimeFactors(n) << endl;     n = 25698751364526;    cout <<  maxPrimeFactors(n); }

## C

 // C Program to find largest prime// factor of number#include #include  // A function to find largest prime factorlong long maxPrimeFactors(long long n){    // Initialize the maximum prime factor    // variable with the lowest one    long long maxPrime = -1;     // Print the number of 2s that divide n    while (n % 2 == 0) {        maxPrime = 2;        n >>= 1; // equivalent to n /= 2    }    // n must be odd at this point    while (n % 3 == 0) {        maxPrime = 3;        n = n / 3;    }     // now we have to iterate only for integers    // who does not have prime factor 2 and 3    for (int i = 5; i <= sqrt(n); i += 6) {        while (n % i == 0) {            maxPrime = i;            n = n / i;        }        while (n % (i + 2) == 0) {            maxPrime = i + 2;            n = n / (i + 2);        }    }     // This condition is to handle the case    // when n is a prime number greater than 4    if (n > 4)        maxPrime = n;     return maxPrime;} // Driver program to test above functionint main(){    long long n = 15;    printf("%lld\n", maxPrimeFactors(n));     n = 25698751364526;    printf("%lld", maxPrimeFactors(n));     return 0;}

## Java

 // Java Program to find largest// prime factor of numberimport java.io.*;import java.util.*; class GFG {     // function to find largest prime factor    static long maxPrimeFactors(long n)    {        // Initialize the maximum prime        // factor variable with the        // lowest one        long maxPrime = -1;         // Print the number of 2s        // that divide n        while (n % 2 == 0) {            maxPrime = 2;             // equivalent to n /= 2            n >>= 1;        }        // n must be odd at this point        while (n % 3 == 0) {            maxPrime = 3;            n = n / 3;        }         // now we have to iterate only for integers        // who does not have prime factor 2 and 3        for (int i = 5; i <= Math.sqrt(n); i += 6) {            while (n % i == 0) {                maxPrime = i;                n = n / i;            }            while (n % (i + 2) == 0) {                maxPrime = i + 2;                n = n / (i + 2);            }        }         // This condition is to handle the case        // when n is a prime number greater than 4        if (n > 4)            maxPrime = n;         return maxPrime;    }     // Driver code    public static void main(String[] args)    {        Long n = 15l;        System.out.println(maxPrimeFactors(n));         n = 25698751364526l;        System.out.println(maxPrimeFactors(n));    }}

## Python3

 # Python3 code to find largest prime# factor of numberimport math # A function to find largest prime factordef maxPrimeFactors (n):         # Initialize the maximum prime factor    # variable with the lowest one    maxPrime = -1         # Print the number of 2s that divide n    while n % 2 == 0:        maxPrime = 2        n >>= 1     # equivalent to n /= 2             # n must be odd at this point    while n % 3 == 0:        maxPrime = 3        n=n/3         # now we have to iterate only for integers    # who does not have prime factor 2 and 3    for i in range(5, int(math.sqrt(n)) + 1, 6):        while n % i == 0:            maxPrime = i            n = n / i        while n % (i+2) == 0:            maxPrime = i+2            n = n / (i+2)             # This condition is to handle the    # case when n is a prime number    # greater than 4    if n > 4:        maxPrime = n         return int(maxPrime) # Driver code to test above functionn = 15print(maxPrimeFactors(n)) n = 25698751364526print(maxPrimeFactors(n))

## C#

 // C# program to find largest// prime factor of numberusing System; class GFG {     // function to find largest prime factor    static long maxPrimeFactors(long n)    {        // Initialize the maximum prime        // factor variable with the        // lowest one        long maxPrime = -1;         // Print the number of 2s        // that divide n        while (n % 2 == 0) {            maxPrime = 2;             // equivalent to n /= 2            n >>= 1;        }        // n must be odd at this point        while (n % 3 == 0) {            maxPrime = 3;            n = n / 3;        }        // now we have to iterate only for integers        // who does not have prime factor 2 and 3        for (int i = 5; i <= Math.Sqrt(n); i += 6) {            while (n % i == 0) {                maxPrime = i;                n = n / i;            }            while (n % (i + 2) == 0) {                maxPrime = i + 2;                n = n / (i + 2);            }        }         // This condition is to handle the case        // when n is a prime number greater than 4        if (n > 4)            maxPrime = n;         return maxPrime;    }     // Driver code    public static void Main()    {        long n = 15L;        Console.WriteLine(maxPrimeFactors(n));         n = 25698751364526L;        Console.WriteLine(maxPrimeFactors(n));    }}

## PHP

 >= 1;    }    // n must be odd at this point    while ($n % 3 == 0) { $maxPrime = 3;        $n=$n/3;    }    // now we have to iterate only for integers    // who does not have prime factor 2 and 3    for ($i = 3; $i <= sqrt($n); $i += 2)    {        while ($n % $i == 0)        {            $maxPrime = $i;            $n = $n / $i; } while ($n % ($i+2) == 0) { $maxPrime = $i+2; $n = $n / ($i+2);        }    }     // This condition is    // to handle the case    // when n is a prime    // number greater than 4    if ($n > 4) $maxPrime = $n;  return $maxPrime;}     // Driver Code    $n = 15; echo maxPrimeFactors($n), "\n";     $n = 25698751364526; echo maxPrimeFactors($n), "\n";  ?>

## Javascript

 

Output

5
328513

Time complexity: Auxiliary space: My Personal Notes arrow_drop_up