Find largest prime factor of a number
Last Updated :
17 Feb, 2025
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);
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);
Time complexity: O(sqrt(n))
Auxiliary space: O(1)
Explore
DSA Fundamentals
Data Structures
Algorithms
Advanced
Interview Preparation
Practice Problem