在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相同,如果没有解决我的话)。
答案 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) % p
和x *= x; x %= p
大致相同,但pow
要慢得多。