Related Articles
Power of a prime number ‘r’ in n!
• Difficulty Level : Medium
• Last Updated : 10 May, 2018

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
Recommended Articles
Page :