Processing math: 0%

First time here? Check out the FAQ!

Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

For exponents there is the relation x^a \equiv x^{a \mod \varphi(n)} \pmod n where \varphi is Euler's phi function.

You confused \varphi(n) with n. Here is a correction of your code, using \varphi = {}euler_phi:

x = 15
z = power_mod(x,3,23) #z=15^3 mod 23
inverse = inverse_mod(3,euler_phi(23)) #1/3 mod phi(23)
assert mod(3*inverse,euler_phi(23))==1 #ok
y = power_mod(z,inverse,23) # y = 15^(3/3) = 15
print(y)

Output:

15
click to hide/show revision 2
No.2 Revision

For exponents there is the relation x^a \equiv x^{a \mod \varphi(n)} \pmod n where if \gcd(x,n)=1; here \varphi is Euler's phi function, and we use Euler's theorem.

You confused \varphi(n) with n. Here is a correction of your code, using \varphi = {}euler_phi:

x = 15
z = power_mod(x,3,23) #z=15^3 mod 23
inverse = inverse_mod(3,euler_phi(23)) #1/3 mod phi(23)
assert mod(3*inverse,euler_phi(23))==1 #ok
y = power_mod(z,inverse,23) # y = 15^(3/3) = 15
print(y)

Output:

15