Open In App
Related Articles

Python Program for Find largest prime factor of a number

Improve Article
Improve
Save Article
Save
Like Article
Like

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

Python3




# Python3 code to find largest prime
# factor of number
import math
  
# A function to find largest prime factor
def maxPrimeFactors (n):
      
    # Initialize the maximum prime factor
    # variable with the lowest one
    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 i in range(3, int(math.sqrt(n)) + 1, 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 int(maxPrime)
  
# Driver code to test above function
n = 15
print(maxPrimeFactors(n))
  
n = 25698751364526
print(maxPrimeFactors(n))
  
# This code is contributed by "Sharad_Bhardwaj".


Output

5
328513

Time complexity: \text{O}(\sqrt{n})
Auxiliary space: \text{O}(1)
Please refer complete article on Find largest prime factor of a number for more details!

Method 2:

Follow the steps below for the implementation:

  • Initialize variables largest_prime to -1, i to 2, and n to the input integer.
  • Start a while loop that continues as long as i * i <= n. This loop will iterate through all possible factors of n.
  • 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.
  • In the inner loop, set largest_prime to i, and update n by dividing it by i.
  • At the end of the inner loop, increment i by 1.
  • 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.
  • Return largest_prime.

Python3




def largest_prime_factor(n):
    """
    Find the largest prime factor of a positive integer 'n'
    :param n: positive integer ( 1 <= n <= 10^15)
    :return: largest prime factor of n
    """
    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
  
n = 15
print(largest_prime_factor(n))
  
n = 25698751364526
print(largest_prime_factor(n))


Output

5
328513

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


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 14 Mar, 2023
Like Article
Save Article
Previous
Next
Similar Reads
Complete Tutorials