Question: Write a program where you implement Modular Exponentiation (ME) using the square and multiply approach as a function which is called in main. ME calculates
Write a program where you implement Modular Exponentiation (ME) using the square and multiply
approach as a function which is called in main. ME calculates a^k mod n. The program should get values
for a, k and n from the user. This code requires two steps. First k must be converted to a binary
representation K consisting of a list of 0s and 1s. Second, Modular Exponentiation must be performed
using a, n and K[] as arguments.
procedure
BinaryK(k)
K = empty list //hint: make K a vector
tmp = k
i = 0
while tmp > 0
add y mod 2 to K //hint: use pushback
tmp = (tmp-K[i])/2
i++
return K
procedure
ModularExpo(a, K, n)
if n = 1
return 0
b = 1
if k = 0
return b
A = a
if K[0] = 1
b = a
for i = 1 to length(K)-1
A = A*A mod n
if K[i] = 1
b = A*b mod n
return b
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
