Find largest prime factor of a number (original) (raw)
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 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 largestPrimeif 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 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 maxPrimen = 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)