结果与预期不符。 pow(x,y,z)必须高效,但结果会改变。为什么呢?
import timeit
print(timeit.timeit("pow(2505626,1520321,2700643)"))
output:3.700144177302718
print(timeit.timeit("pow(2505626,1520321,2700643)",number=1000000))
output:4.591832527890801
print(timeit.timeit("2505626**1520321%2700643",number=1000000))
output:0.014752348884940147
答案 0 :(得分:0)
确实pow()
在整数上没有很好的表现(在三个参数形式中)。请参阅函数的docstring:
代码:
def pow(*args, **kwargs): # real signature unknown
"""
Equivalent to x**y (with two arguments) or x**y % z (with three arguments)
Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.
"""
pass