Prime factors of a big number

08 Jun, 2022
Given a number N, print all the prime factors and their powers. Here N <= 10^18Examples :  
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++
Java
Python3
C#
PHP
Javascript
// 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 factorvoid 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 functionint main(){    long long n = 1000000000000000000;    factorize(n);    return 0;}
//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 program to print prime factors# and their powers.import math # Function to calculate all the prime# factors and count of every prime factordef 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 Coden = 1000000000000000000;factorize(n); # This code is contributed by mits
// 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 factorstatic 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 program to print prime// factors and their powers. // function to calculate all// the prime factors and count// of every prime factorfunction 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.?>
<script> // JavaScript program to print prime factors and their// powers. // function to calculate all the prime factors and// count of every prime factorfunction 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 functionvar n = 1000000000000000000;factorize(n); </script>
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. 
vt_m
jit_t
29AjayKumar
Mithun Kumar
famously
rohan07
prime-factor
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Operators in C / C++
Prime Numbers
Find minimum number of coins that make a given value
Minimum number of jumps to reach end
Algorithm to solve Rubik's Cube
Modulo 10^9+7 (1000000007)
The Knight's tour problem | Backtracking-1
Modulo Operator (%) in C/C++ with Examples
Program for factorial of a number
Program to find sum of elements in a given array