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