Lua 转 Python 的模幂函数出现问题

我试图将一个 Lua 的 mod_pow() 函数(能正常工作)转换成 Python。我觉得语法和所有东西都没问题,所以不知道哪里出错了。有没有人知道我需要在 Python 代码中改变什么以使它工作并像 Lua 代码一样得到 81 呢?

Lua 工作代码:

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 非工作代码:

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
点赞
用户11750129
用户11750129

^ 在 Python 中是按位异或运算符。参考文献:这里

2019-11-14 05:17:13