无法将模数 pow() 函数从 Lua 转换为 Python
Trouble converting a modulus pow() function from Lua to 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
^
是 python 中的按位异或。参考:here
我试图将 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
^
是 python 中的按位异或。参考:here