擅长:python、mysql、java
<p>仅对于协议:如果前两个参数是整数类型,则<code>**</code>运算符调用<a href="https://docs.python.org/2/library/functions.html#pow" rel="nofollow">built-in ^{<cd2>} function</a>,后者接受可选的第三个参数(模)。</p>
<p>所以,如果你想计算来自异能的余数,使用内置函数。<code>math.pow</code>可能会给出错误的结果:</p>
<pre><code>import math
base = 13
exp = 100
mod = 2
print math.pow(base, exp) % mod
print pow(base, exp, mod)
</code></pre>
<p>当我运行这个程序时,我得到了<code>0.0</code>在第一个例子中,这显然不是真的,因为13是奇数(因此所有的积分幂)。<code>math.pow</code>版本使用的精度有限,这会导致错误。</p>
<p>为了公平起见,我们必须说,<code>math.pow</code>可以更快:</p>
<pre><code>import timeit
print timeit.timeit("math.pow(2, 100)",setup='import math')
print timeit.timeit("pow(2, 100)")
</code></pre>
<p>以下是我的输出:</p>
<pre><code>0.240936803195
1.4775809183
</code></pre>
<hr/>
<p>一些在线示例</p>
<ul>
<li><a href="http://ideone.com/qaDWRd" rel="nofollow">http://ideone.com/qaDWRd</a>(带<code>math.pow</code>的余数错误)</li>
<li><a href="http://ideone.com/g7J9Un" rel="nofollow">http://ideone.com/g7J9Un</a>(在int值上使用<code>pow</code>会降低性能)</li>
<li><a href="http://ideone.com/KnEtXj" rel="nofollow">http://ideone.com/KnEtXj</a>(浮点值上的<code>pow</code>性能稍低)</li>
</ul>