VOOZH about

URL: https://www.geeksforgeeks.org/dsa/find-power-power-mod-prime/

⇱ Find power of power under mod of a prime - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Find power of power under mod of a prime

Last Updated : 19 Jul, 2024

Given four numbers A, B, C and M, where M is prime number. Our task is to compute A raised to power (B raised to power C) modulo M.
Example:

Input : A = 2, B = 4, C = 3, M = 23
Output : 6
43 = 64 so,
2^64(mod 23) = 6



A Naive Approach is to calculate res = BC and then calculate Ares % M by modular exponential. The problem of this approach is that we can't apply directly mod M on BC, so we have to calculate this value without mod M. But if we solve it directly then we will come up with the large value of exponent of A which will definitely overflow in final answer.
An Efficient approach is to reduce the BC to a smaller value by using the Fermat's Little Theorem, and then apply Modular exponential.

According the Fermat's little
a(M - 1) = 1 (mod M) if M is a prime.

So if we rewrite BC as x*(M-1) + y, then the
task of computing ABC becomes Ax*(M-1) + y
which can be written as Ax*(M-1)*Ay.
From Fermat's little theorem, we know Ax*(M-1) = 1.
So task of computing ABC reduces to computing Ay

What is the value of y?
From BC = x * (M - 1) + y,
y can be written as BC % (M-1)

We can easily use the above theorem such that we can get
A ^ (B ^ C) % M = (A ^ y ) % M

Now we only need to find two things as:-
1. y = (B ^ C) % (M - 1)
2. Ans = (A ^ y) % M


Output:

18


Time Complexity: O(log(C) + log(M)) Note that the result of first call to power would be bounded by M. 
Auxiliary space: O(1)

Comment