Skip to content
Related Articles

Related Articles

Prime factors of a big number
  • Difficulty Level : Medium
  • Last Updated : 20 Dec, 2018

Given a number N, print all the prime factors and their powers. Here N <= 10^18

Examples :

Input : 250 
Output : 2  1
         5  3
Explanation: The prime factors of 250 are 2
and 5. 2 appears once in the prime factorization 
of and 5 is thrice in it. 

Input : 1000000000000000000
Output : 2  18
         5  18
Explanation: The prime factors of 1000000000000000000
are 2 and 5. The prime factor 2 appears 18 times in 
the prime factorization. 5 appears 18 times. 

We cannot use Sieve’s implementation for a single large number as it requires proportional space. We first count the number of times 2 is the factor of the given number, then we iterate from 3 to Sqrt(n) to get the number of times a prime number divides a particular number which reduces every time by n/i. We divide our number n (whose prime factorization is to be calculated) by its corresponding smallest prime factor till n becomes 1. And if at the end n>2, it means its a prime number, so we print that particular number.

C++




// CPP program to print prime factors and their
// powers.
#include <bits/stdc++.h>
using namespace std;
  
// function to calculate all the prime factors and 
// count of every prime factor
void factorize(long long n)
{
    int count = 0;
  
    // count the number of times 2 divides 
    while (!(n % 2)) {
        n >>= 1; // equivalent to n=n/2;
        count++;
    }
  
    // if 2 divides it
    if (count)
        cout << 2 << "  " << count << endl;
  
    // check for all the possible numbers that can 
    // divide it
    for (long long i = 3; i <= sqrt(n); i += 2) {
        count = 0;
        while (n % i == 0) {
            count++;
            n = n / i;
        }
        if (count)
            cout << i << "  " << count << endl;
    }
  
    // if n at the end is a prime number.
    if (n > 2)
        cout << n << "  " << 1 << endl;
}
  
// driver program to test the above function
int main()
{
    long long n = 1000000000000000000;
    factorize(n);
    return 0;
}

Java




//Java program to print prime 
// factors and their powers.
  
class GFG {
  
// function to calculate all the 
// prime factors and count of 
// every prime factor 
    static void factorize(long n) {
        int count = 0;
  
        // count the number of times 2 divides 
        while (!(n % 2 > 0)) {
            // equivalent to n=n/2; 
            n >>= 1;
  
            count++;
        }
  
        // if 2 divides it 
        if (count > 0) {
            System.out.println("2" + " " + count);
        }
  
        // check for all the possible 
        // numbers that can divide it 
        for (long i = 3; i <= (long) Math.sqrt(n); i += 2) {
            count = 0;
            while (n % i == 0) {
                count++;
                n = n / i;
            }
            if (count > 0) {
                System.out.println(i + " " + count);
            }
        }
  
        // if n at the end is a prime number. 
        if (n > 2) {
            System.out.println(n + " " + "1");
        }
    }
  
    public static void main(String[] args) {
        long n = 1000000000000000000L;
        factorize(n);
    }
}
  
/*This code is contributed by 29AjayKumar*/

Python3




# Python3 program to print prime factors 
# and their powers.
import math
  
# Function to calculate all the prime 
# factors and count of every prime factor
def factorize(n):
    count = 0;
  
    # count the number of 
    # times 2 divides 
    while ((n % 2 > 0) == False): 
          
        # equivalent to n = n / 2;
        n >>= 1
        count += 1;
  
    # if 2 divides it
    if (count > 0):
        print(2, count);
  
    # check for all the possible
    # numbers that can divide it
    for i in range(3, int(math.sqrt(n)) + 1):
        count = 0;
        while (n % i == 0): 
            count += 1;
            n = int(n / i);
        if (count > 0):
            print(i, count);
        i += 2;
  
    # if n at the end is a prime number.
    if (n > 2):
        print(n, 1);
  
# Driver Code
n = 1000000000000000000;
factorize(n);
  
# This code is contributed by mits

C#




// C# program to print prime 
// factors and their powers.
using System;
  
public class GFG
{
  
// function to calculate all the 
// prime factors and count of 
// every prime factor
static void factorize(long n)
{
    int count = 0;
  
    // count the number of times 2 divides 
    while (! (n % 2 > 0)) 
    {
        // equivalent to n=n/2;
        n >>= 1; 
          
        count++;
    }
  
    // if 2 divides it
    if (count > 0)
        Console.WriteLine("2" + " " +count);
  
    // check for all the possible
    // numbers that can divide it
    for (long i = 3; i <= (long)
         Math.Sqrt(n); i += 2) 
    {
        count = 0;
        while (n % i == 0) {
            count++;
            n = n / i;
        }
        if (count > 0)
            Console.WriteLine(i + " " + count);
    }
  
    // if n at the end is a prime number.
    if (n > 2)
        Console.WriteLine(n +" " + "1" );
}
  
    // Driver Code
    static public void Main ()
    {
        long n = 1000000000000000000;
        factorize(n);
          
    }
}
  
// This code is contributed by vt_m.

PHP




<?php
// PHP program to print prime
// factors and their powers.
  
// function to calculate all 
// the prime factors and count 
// of every prime factor
function factorize($n)
{
    $count = 0;
  
    // count the number of 
    // times 2 divides 
    while (!($n % 2)) 
    {
        // equivalent to n = n / 2;
        $n >>= 1; 
        $count++;
    }
  
    // if 2 divides it
    if ($count)
        echo(2 . " " . $count . "\n");
  
    // check for all the possible
    // numbers that can divide it
    for ($i = 3; $i <= sqrt($n); $i += 2)
    {
        $count = 0;
        while ($n % $i == 0) 
        {
            $count++;
            $n = $n / $i;
        }
        if ($count)
            echo($i . " " . $count);
    }
  
    // if n at the end is a prime number.
    if ($n > 2)
        echo($n . " " . 1);
}
  
// Driver Code
$n = 1000000000000000000;
factorize($n);
  
// This code is contributed by Ajit.
?>


Output :
2 18
5 18

Time complexity : O(sqrt(n)).

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :