Prime factors of a big number

Last Updated : 14 Aug, 2024

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 it's 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.
JavaScript
<script>

// JavaScript program to print prime factors and their
// powers.

// function to calculate all the prime factors and 
// count of every prime factor
function factorize(n)
{
    var count = 0;

    // count the number of times 2 divides 
    while ((n % 2)==0) {
        n = parseInt(n/2) // equivalent to n=n/2;
        count++;
    }
    
    // if 2 divides it
    if (count)
        document.write( 2 + "  " + count + "<br>");

    // check for all the possible numbers that can 
    // divide it
    for (var i = 3; i <= parseInt(Math.sqrt(n)); i += 2) {
        count = 0;
        while (n % i == 0) {
            count++;
            n = parseInt(n / i);
        }
        if (count!=0)
            document.write( i + "  " + count + "<br>");
    }

    // if n at the end is a prime number.
    if (n > 2)
        document.write( n + "  " + 1 + "<br>");
}

// driver program to test the above function
var n = 1000000000000000000;
factorize(n);

</script> 
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)), as we are using a loop to traverse sqrt(N) times.

Auxiliary Space: O(1), as we are not using any extra space.
 

Comment