# Power of a prime number ‘r’ in n!

Given an integer n, find the power of a given prime number(r) in n!

Examples :

```Input  : n = 6  r = 3
Factorial of 6 is 720 = 2^4 * 3^2 *5 (prime factor 2,3,5)
and power of 3 is 2
Output : 2

Input  : n = 2000 r = 7
Output : 330
```

A simple method is to first calculate factorial of n, then factorize it to find the power of a prime number.
The above method can cause overflow for a slightly bigger numbers as factorial of a number is a big number. The idea is to consider prime factors of a factorial n.

Legendre Factorization of n!
For any prime number p and any integer n, let Vp(n) be the exponent of the largest power of p that divides n (that is, the p-adic valuation of n). Then
Vp(n) = summation of floor(n / p^i) and i goes from 1 to infinity

While the formula on the right side is an infinite sum, for any particular values of n and p it has only finitely many nonzero terms: for every i large enough that p^i > n, one has floor(n/p^i) = 0 . since, the sum is convergent.

`Power of ‘r’ in n! = floor(n/r) + floor(n/r^2) + floor(n/r^3) + ....`

Program to count power of a no. r in n! based on above formula.

## C++

 `// C++ program to find power of  ` `// a prime number ‘r’ in n! ` `#include ` `using`  `namespace` `std; ` ` `  `// Function to return power of a  ` `// no. 'r' in factorial of n ` `int` `power(``int` `n, ``int` `r) ` `{            ` `    ``// Keep dividing n by powers of  ` `    ``// 'r' and update count ` `    ``int` `count = 0; ` `    ``for` `(``int` `i = r; (n / i) >= 1; i = i * r)     ` `        ``count += n / i; ` `    ``return` `count; ` `} ` ` `  `// Driver program to ` `// test above function ` `int` `main()  ` `{ ` `    ``int` `n = 6,  r = 3;    ` `    ``printf``(``" %d "``, power(n, r));     ` `    ``return` `0; ` `} `

## Java

 `// Java program to find power of ` `// a prime number 'r' in n! ` ` `  `class` `GFG { ` `     `  `// Function to return power of a ` `// no. 'r' in factorial of n ` `static` `int` `power(``int` `n, ``int` `r) { ` `     `  `    ``// Keep dividing n by powers of ` `    ``// 'r' and update count ` `    ``int` `count = ``0``; ` `    ``for` `(``int` `i = r; (n / i) >= ``1``; i = i * r) ` `    ``count += n / i; ` `    ``return` `count; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main(String[] args)  ` `{ ` `    ``int` `n = ``6``, r = ``3``; ` `    ``System.out.print(power(n, r)); ` `} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python3

 `  `  `# Python3 program to find power  ` `# of a prime number ‘r’ in n! ` ` `  `# Function to return power of a  ` `# no. 'r' in factorial of n ` `def` `power(n, r): ` `         `  `    ``# Keep dividing n by powers of  ` `    ``# 'r' and update count ` `    ``count ``=` `0``; i ``=` `r ` `     `  `    ``while``((n ``/` `i) >``=` `1``): ` `        ``count ``+``=` `n ``/` `i ` `        ``i ``=` `i ``*` `r ` `         `  `    ``return` `int``(count) ` ` `  `# Driver Code ` `n ``=` `6``; r ``=` `3` `print``(power(n, r))  ` ` `  `# This code is contributed by Smitha Dinesh Semwal. `

## C#

 `// C# program to find power of ` `// a prime number 'r' in n! ` `using` `System; ` ` `  `class` `GFG { ` `     `  `// Function to return power of a ` `// no. 'r' in factorial of n ` `static` `int` `power(``int` `n, ``int` `r) { ` `     `  `    ``// Keep dividing n by powers of ` `    ``// 'r' and update count ` `    ``int` `count = 0; ` `    ``for` `(``int` `i = r; (n / i) >= 1; i = i * r) ` `    ``count += n / i; ` `    ``return` `count; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main()  ` `{ ` `    ``int` `n = 6, r = 3; ` `    ``Console.WriteLine(power(n, r)); ` `} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 `= 1; ` `                   ``\$i` `= ``\$i` `* ``\$r``)  ` `        ``\$count` `+= ``\$n` `/ ``\$i``; ` `    ``return` `\$count``; ` `} ` ` `  `    ``// Driver Code ` `    ``\$n` `= 6; ``\$r` `= 3;  ` `    ``echo` `power(``\$n``, ``\$r``);  ` ` `  `// This code is contributed by ajit ` `?> `

Output:

```2
```

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 Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : jit_t

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.