pow函数求助
按照教程 pow(x,y,z)是X的Y次方对z求余数如pow(2,2,3)=1
那么按道理pow(2,-2,3)=2**-2%3=0.25
然而实际上pow(2,-2,3)求出的结果是1??
求解达人原因
谢谢! 本帖最后由 小伤口 于 2021-9-1 12:42 编辑
可能你理解错了{:10_250:}
2的-2次方是4分之1对吧,再除以3等于12分之1
也就是1除以12,求余不是求小数,用小学的方法
1除以12不够除,就为0所以就余1了呀。{:10_250:} >>> pow(2,-2,5)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
pow(2,-2,5)
ValueError: pow() 2nd argument cannot be negative when 3rd argument specified 这里有明显的提示及其原因
ValueError: pow() 2nd argument cannot be negative when 3rd argument specified
我英文不好,简单翻译一下 当pow第三个参数被指定时,第二个参数不能是负数 >>> pow(2,-3,3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: pow() 2nd argument cannot be negative when 3rd argument specified 你们是哪个python版本,我的python3.9, pow()的第二个参数可以是负数,没有错误提示:
>>> pow(2,-2,5)
4
我估计python是这样处理:把第二个为负数的参数采用绝对值处理了。 ????{:10_245:} Python3.9可运行
猜想:
2 ** (-2) % 3 = (2 ** (-2)) / 3 = 0.25 / 3 求余数 -> 0……0.25
pow(2,-2,3) = (2 ** (-2)/ 3)= 0.25 / 3 = 1 / 12 求余数 -> 0……1
这样的话,我觉得
2 ** (-2) % 3 = pow(2,-2)% 3 才成立。
我也不是很懂啊{:10_245:},想了好久,还变成数学问题了{:10_269:},结果还是没想通{:10_266:},求指教{:10_254:}! 請先理解樓主所發問的問題吧,樓主說的確實沒有錯,只是 Python 官方已經說明 2.2.1 版本後 pow() 函數做修改了,詳情可以點擊官網:Incompatibilities between Python 2.1[.x] and 2.2[.x]
The 3-argument builtin pow() no longer allows a third non-None argument if either of the first two arguments is a float, or if both are of integer types and the second argument is negative (in which latter case the arguments are converted to float, so this is really the same restriction). pow函数解读
https://fishc.com.cn/thread-223019-1-1.html
(出处: 鱼C论坛)
挺绕的,第二个为负数先求逆模:
(底数、负指数、模数)-----》(逆模、指数、模数)
页:
[1]