2

I have tried to rewrite a Lua mod_pow() function ( which works ) to Python. The syntax and everything looks ok to me so I'm not sure what I'm missing. Does anyone know what I need to change in my Python code to get it to work and give 81 as the answer as the Lua code does?

Lua working code:

function modPow(b,e,m)
        if m == 1 then
                return 0
        else
                local r = 1
                b = b % m
                while e > 0 do
                        if e % 2 == 1 then
                                r = (r*b) % m
                        end
                        e = e >> 1     --use 'e = math.floor(e / 2)' on Lua 5.2 or older
                        b = (b^2) % m
                end
                return r
        end
end

modPow(7,4,145)
81.0

Python non working code:

def modular_pow(b, e, m):
    if m == 1: 
       return 0
    else:
      r=1
      b = b % m
      while e > 0:
        if e % 2 == 1:
           r = (r*b) % m
        e = e >> 1
        b = (b^2)% m
    return r

modular_pow(7,4,145)
7
Piglet
  • 27,501
  • 3
  • 20
  • 43
oppressionslayer
  • 6,942
  • 2
  • 7
  • 24

1 Answers1

1

^ is bitwise XOR in python. reference: here

namannimmo
  • 136
  • 1
  • 6