象棋爱好者 发表于 2023-1-6 14:27:18

这是怎么回事?

>>> pow(2,-3,5)
2

lxping 发表于 2023-1-6 14:41:52

本帖最后由 lxping 于 2023-1-6 14:50 编辑

pow(x, y[, z])函数在python3.8里据说是有变化的。有些情况下第二个数为负数会求x的模逆元素x'(对z取模)
模逆运算大概是x' * x % z == 1,例如:
>>> pow(2, -3, 3)
2
>>> 2 * 2 % 3 == 1
True

wp231957 发表于 2023-1-6 14:44:08

>>> pow(2,3,5)
3
>>> pow(2,-3,5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: pow() 2nd argument cannot be negative when 3rd argument specified
>>>

isdkz 发表于 2023-1-6 14:51:47

wp231957 发表于 2023-1-6 14:44
>>> pow(2,3,5)
3
>>> pow(2,-3,5)


你的 python 版本老了点{:10_277:}

wp231957 发表于 2023-1-6 14:53:43

isdkz 发表于 2023-1-6 14:51
你的 python 版本老了点

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) on win32
我原来要做pyinstaller的win7版本查到它只支持3.7 后来也没成功这个3.7也没换了

象棋爱好者 发表于 2023-1-6 23:19:51

lxping 发表于 2023-1-6 14:41
pow(x, y[, z])函数在python3.8里据说是有变化的。有些情况下第二个数为负数会求x的模逆元素x'(对z取模)
...

诶,那我2*2%5也应该是4啊

无理想的闲鱼 发表于 2023-1-6 23:20:53

pow函数解读
https://fishc.com.cn/thread-223019-1-1.html
(出处: 鱼C论坛)

自己琢磨了一小会,欢迎大佬们批评指正

象棋爱好者 发表于 2023-1-6 23:21:42

isdkz 发表于 2023-1-6 14:51
你的 python 版本老了点

。。。。。
页: [1]
查看完整版本: 这是怎么回事?