Open In App

Find largest prime factor of a number

Last Updated : 17 Feb, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

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

Input: 6
Output: 3
Explanation Prime factor are 2 and 3. Largest of them is 3.

Input: 15
Output: 5
Explanation: Prime factors are 3 and 5. The largest of them is 5.

Input: 28
Output: 7
Explanation: Prime factors are 2 and 7. The largest of them is 7.

[Naive Approach] Basic Trial Division

  • The method starts by removing all factors of 2, as it is the only even prime.
  • Once 2 is completely removed, odd numbers are checked starting from 3.
  • Each odd number is tested for divisibility, and the number is divided repeatedly until the factor is fully removed.
  • This process continues for all odd numbers up to √n.
  • If a number greater than 2 remains after all divisions, it is a prime number and the largest prime factor.
C++
// C++ code to find largest prime
// factor of number

#include <iostream>
using namespace std;

int largestPrimeFactor(int n) {

    int largestPrime = -1;

    // Check for factors of 2
    while (n % 2 == 0) {
        largestPrime = 2;
        n /= 2;
    }

    // Check for odd factors starting from 3
    for (int i = 3; i * i <= n; i += 2) {
        while (n % i == 0)  {
            largestPrime = i;
            n /= i;
        }
    }

    // If n is still greater than 2, it is
    // a prime number
    if (n > 2) {
        largestPrime = n;
    }

    return largestPrime;
}

int main() {
    int n = 15;
    int res = largestPrimeFactor(n);
    cout << res << endl;

    return 0;
}
Java
// Java code to find largest prime
// factor of number

class GfG {

    static int largestPrimeFactor(int n) {

        int largestPrime = -1;

        // Check for factors of 2
        while (n % 2 == 0) {
            largestPrime = 2;
            n /= 2;
        }

        // Check for odd factors starting from 3
        for (int i = 3; i * i <= n; i += 2) {
            while (n % i == 0) {
                largestPrime = i;
                n /= i;
            }
        }

        // If n is still greater than 2, it is
        // a prime number
        if (n > 2) {
            largestPrime = n;
        }

        return largestPrime;
    }

    public static void main(String[] args) {
        int n = 15;
        int res = largestPrimeFactor(n);
        System.out.println(res);
    }
}
Python
# Python code to find largest prime
# factor of number


def largestPrimeFactor(n):
    largestPrime = -1

    # Check for factors of 2
    while n % 2 == 0:
        largestPrime = 2
        n //= 2

    # Check for odd factors starting from 3
    i = 3
    while i * i <= n:
        while n % i == 0:
            largestPrime = i
            n //= i
        i += 2

    # If n is still greater than 2, it is
    # a prime number
    if n > 2:
        largestPrime = n

    return largestPrime


if __name__ == "__main__":
    n = 15
    res = largestPrimeFactor(n)
    print(res)
C#
// C# code to find largest prime
// factor of number

using System;

class GfG {
    
    static int largestPrimeFactor(int n) {
        int largestPrime = -1;

        // Check for factors of 2
        while (n % 2 == 0) {
            largestPrime = 2;
            n /= 2;
        }

        // Check for odd factors starting from 3
        for (int i = 3; i * i <= n; i += 2) {
            while (n % i == 0) {
                largestPrime = i;
                n /= i;
            }
        }

        // If n is still greater than 2, it is
        // a prime number
        if (n > 2) {
            largestPrime = n;
        }

        return largestPrime;
    }

    static void Main(string[] args) {
        int n = 15;
        int res = largestPrimeFactor(n);
        Console.WriteLine(res);
    }
}
JavaScript
// JavaScript code to find largest prime
// factor of number

function largestPrimeFactor(n) {
    let largestPrime = -1;

    // Check for factors of 2
    while (n % 2 === 0) {
        largestPrime = 2;
        n /= 2;
    }

    // Check for odd factors starting from 3
    for (let i = 3; i * i <= n; i += 2) {
        while (n % i === 0) {
            largestPrime = i;
            n /= i;
        }
    }

    // If n is still greater than 2, it is a prime number
    if (n > 2) {
        largestPrime = n;
    }

    return largestPrime;
}

let n = 15;
let res = largestPrimeFactor(n);
console.log(res);

Output
5

Time complexity: O(sqrt(n)).
Auxiliary space: O(1)

[Expected Approach] Optimized Trial Division

  • The method first removes all factors of 2 and 3 to simplify the number.
  • After eliminating these smallest primes, further factorization follows a structured approach.
  • Instead of checking all odd numbers, only numbers of the form 6k ± 1 are tested.
  • This works because all prime numbers greater than 3 follow this pattern.
  • By skipping unnecessary checks, the approach reduces iterations while efficiently finding the largest prime factor.
C++
// C++ code to find largest prime
// factor of number

#include <iostream>
using namespace std;
 
int largestPrimeFactor(int n) {
  
    // Initialize the maximum prime factor variable
    int maxPrime = -1;

    // Check for factors of 2
    while (n % 2 == 0) {
        maxPrime = 2;
        n >>= 1;  
    }

    // Check for factors of 3
    while (n % 3 == 0) {
        maxPrime = 3;
        n = n / 3;
    }

    // Check for odd factors starting from 5 and 
  // incrementing by 6 (i and i+2)
    for (int i = 5; i * i <= n; i += 6) {
        while (n % i == 0) {
            maxPrime = i;
            n = n / i;
        }
        while (n % (i + 2) == 0) {
            maxPrime = i + 2;
            n = n / (i + 2);
        }
    }

   // If n is still greater than 4, it is a 
  // prime number
    if (n > 4)
        maxPrime = n;

    return maxPrime;
}

int main() {
    int n = 15;
    int res = largestPrimeFactor(n);
    cout << res << endl;
    return 0;
}
C
// C code to find largest prime
// factor of number

#include <stdio.h>

int largestPrimeFactor(int n) {
  
    // Initialize the maximum prime factor variable
    int maxPrime = -1;

    // Check for factors of 2
    while (n % 2 == 0) {
        maxPrime = 2;
        n /= 2;   
    }

    // Check for factors of 3
    while (n % 3 == 0) {
        maxPrime = 3;
        n = n / 3;
    }

    // Check for odd factors starting from 5 and 
    // incrementing by 6 (i and i+2)
    for (int i = 5; i * i <= n; i += 6) {
        while (n % i == 0) {
            maxPrime = i;
            n = n / i;
        }
        while (n % (i + 2) == 0) {
            maxPrime = i + 2;
            n = n / (i + 2);
        }
    }

    // If n is still greater than 4, it is a prime
  // number
    if (n > 4)
        maxPrime = n;

    return maxPrime;
}

int main() {
    int n = 15;
    int res = largestPrimeFactor(n);
    printf("%d\n", res);  
    return 0;
}
Java
// Java code to find largest prime
// factor of number

class GfG {

    static int largestPrimeFactor(int n) {

        // Initialize the maximum prime factor variable
        int maxPrime = -1;

        // Check for factors of 2
        while (n % 2 == 0) {
            maxPrime = 2;
            n /= 2;
        }

        // Check for factors of 3
        while (n % 3 == 0) {
            maxPrime = 3;
            n = n / 3;
        }

        // Check for odd factors starting from 5 and
        // incrementing by 6 (i and i+2)
        for (int i = 5; i * i <= n; i += 6) {
            while (n % i == 0) {
                maxPrime = i;
                n = n / i;
            }
            while (n % (i + 2) == 0) {
                maxPrime = i + 2;
                n = n / (i + 2);
            }
        }

        // If n is still greater than 4, it is a prime
        // number
        if (n > 4) {
            maxPrime = n;
        }

        return maxPrime;
    }

    public static void main(String[] args) {
        int n = 15;
        int res = largestPrimeFactor(n);
        System.out.println(res);
    }
}
Python
# Python code to find largest prime
# factor of number


def largestPrimeFactor(n):

    # Initialize the maximum prime factor variable
    maxPrime = -1

    # Check for factors of 2
    while n % 2 == 0:
        maxPrime = 2
        n //= 2

    # Check for factors of 3
    while n % 3 == 0:
        maxPrime = 3
        n //= 3

    # Check for odd factors starting from 5 and
    # incrementing by 6 (i and i+2)
    i = 5
    while i * i <= n:
        while n % i == 0:
            maxPrime = i
            n //= i
        while n % (i + 2) == 0:
            maxPrime = i + 2
            n //= (i + 2)
        i += 6

    # If n is still greater than 4, it is a prime
    # number
    if n > 4:
        maxPrime = n

    return maxPrime


n = 15
res = largestPrimeFactor(n)
print(res)
C#
// C# code to find largest prime
// factor of number

using System;

class GfG {

    static int largestPrimeFactor(int n) {

        // Initialize the maximum prime factor variable
        int maxPrime = -1;

        // Check for factors of 2
        while (n % 2 == 0) {
            maxPrime = 2;
            n /= 2;
        }

        // Check for factors of 3
        while (n % 3 == 0) {
            maxPrime = 3;
            n /= 3;
        }

        // Check for odd factors starting from 5 and
        // incrementing by 6 (i and i+2)
        for (int i = 5; i * i <= n; i += 6) {
            while (n % i == 0) {
                maxPrime = i;
                n /= i;
            }
            while (n % (i + 2) == 0) {
                maxPrime = i + 2;
                n /= (i + 2);
            }
        }

        // If n is still greater than 4, it is a prime
        // number
        if (n > 4) {
            maxPrime = n;
        }

        return maxPrime;
    }

    static void Main() {
        int n = 15;
        int res = largestPrimeFactor(n);
        Console.WriteLine(res);
    }
}
JavaScript
// JavaScript code to find largest prime
// factor of number 

function largestPrimeFactor(n) {

    // Initialize the maximum prime factor variable
    let maxPrime = -1;

    // Check for factors of 2
    while (n % 2 === 0) {
        maxPrime = 2;
        n /= 2;
    }

    // Check for factors of 3
    while (n % 3 === 0) {
        maxPrime = 3;
        n /= 3;
    }

    // Check for odd factors starting from 5 and 
    // incrementing by 6 (i and i + 2)
    for (let i = 5; i * i <= n; i += 6) {
        while (n % i === 0) {
            maxPrime = i;
            n /= i;
        }
        while (n % (i + 2) === 0) {
            maxPrime = i + 2;
            n /= (i + 2);
        }
    }

    // If n is still greater than 4, it is a prime number
    if (n > 4) {
        maxPrime = n;
    }

    return maxPrime;
}
 
let n = 15;
let res = largestPrimeFactor(n);
console.log(res);

Output
5

Time complexity: O(sqrt(n))
Auxiliary space: O(1)



Next Article

Similar Reads