# Prime factors of a big number

• Difficulty Level : Medium
• Last Updated : 08 Jun, 2022

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 ``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

 `>= 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.``?>`

## Javascript

 ``

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.

My Personal Notes arrow_drop_up