x * x mod(p)最有效的pythonic方式?

时间:2017-02-07 21:48:40

标签: python modulo

在python中执行x = x * x mod(p)的最有效方法是什么: (我知道x< p)

x = pow(a, 2, p)

x = x*x % p

x *= x
x %= p

(如果按效率衡量,我认为x * x与x ** 2相同,如果没有解决我的话)。

1 个答案:

答案 0 :(得分:2)

Python有一个timeit模块,用于测试这类事情:

$ python -m timeit 'x = 2000; p = 2002; x = pow(x, 2, p)'
10000000 loops, best of 3: 0.115 usec per loop
$ python -m timeit 'x = 2000; p = 2002; x = (x * x) % p' 
10000000 loops, best of 3: 0.0542 usec per loop
$ python -m timeit 'x = 2000; p = 2002; x *= x; x %= p' 
10000000 loops, best of 3: 0.0614 usec per loop

您的回答是(x * x) % px *= x; x %= p大致相同,但pow要慢得多。