擅长:python、mysql、java
<p>15.9毫秒在我的慢笔记本上。是指纹让你慢下来。把二进制数转换成十进制数是相当慢的,这是打印出来的必经步骤。如果你需要输出数字,你应该尝试克里斯托弗已经提到的小数。</p>
<p>DecInt做乘法比较慢,但打印速度要快得多</p>
<pre><code>In [34]: a=2**333000
In [35]: len(str(a))
Out[35]: 100243
In [36]: b=2**333001
In [37]: len(str(b))
Out[37]: 100244
In [38]: timeit c=a*b
10 loops, best of 3: 15.9 ms per loop
</code></pre>
<p>下面是一个稍微修改了代码版本的示例。请注意,在这台计算机上,将一个100000位的字符串转换为长字符串已经需要大约1秒的时间</p>
<pre><code>In [1]: def f(a):
...: if(a<0):
...: a=a*-1
...: a=((a*(a+1)/2)-1)
...: else:
...: a=(a*(a+1))/2
...: return a
...:
In [2]: a=3**200000
In [3]: len(str(a))
Out[3]: 95425
In [4]: timeit f(a)
10 loops, best of 3: 417 ms per loop
</code></pre>