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.

Try It Yourselfredirect icon

[Naive Approach] Basic Trial Division

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 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

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 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)