Open In App

C Program for Find largest prime factor of a number

Last Updated : 25 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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

Method 1:

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 <math.h>
 
// A function to find largest prime factor
long 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, thus skip
    // the even numbers and iterate only for
    // odd integers
    for (int i = 3; i * i <= n; i += 2) {
        while (n % i == 0) {
            maxPrime = i;
            n = n / i;
        }
    }
 
    // This condition is to handle the case
    // when n is a prime number greater than 2
    if (n > 2)
        maxPrime = n;
 
    return maxPrime;
}
 
// Driver program to test above function
int main()
{
    long long n = 15;
    printf("%lld\n", maxPrimeFactors(n));
 
    n = 25698751364526;
    printf("%lld", maxPrimeFactors(n));
 
    return 0;
}
 
// This code is modified by Susobhan Akhuli

                    
Output:
5
328513

Time complexity: \text{O}(\sqrt{n})
Auxiliary space: \text{O}(1)

Method 2:

Follow the steps below for the implementation:

  1. Initialize variables largest_prime to -1, i to 2, and n to the input integer.
  2. Start a while loop that continues as long as i * i <= n. This loop will iterate through all possible factors of n.
  3. In the while loop, start another while loop that continues as long as n % i == 0. This inner loop will divide n by i until n is no longer divisible by i.
  4. In the inner loop, set largest_prime to i, and update n by dividing it by i.
  5. At the end of the inner loop, increment i by 1.
  6. After the outer loop, if n > 1, set largest_prime to n. This is because n could be a prime number larger than any of its factors.
  7. Return largest_prime.

Below is the implementation of the above approach:

C

// C code to find largest prime factor of number
#include <stdio.h>
 
// Function to find the largest prime factor of a positive
// integer 'n'
long long maxPrimeFactors(long long n)
{
    long long largest_prime = -1, i = 2;
    while (i * i <= n) {
        while (n % i == 0) {
            largest_prime = i;
            n = n / i;
        }
        i = i + 1;
    }
    if (n > 1) {
        largest_prime = n;
    }
    return largest_prime;
}
 
int main()
{
    long long n = 15;
    printf("%lld\n", maxPrimeFactors(n));
 
    n = 25698751364526;
    printf("%lld\n", maxPrimeFactors(n));
 
    return 0;
}
 
// This code is contributed by Susobhan Akhuli

                    

Output
5
328513

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

Please refer complete article on Find largest prime factor of a number for more details!



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads