python的大数计算是怎么做的,为何这么快,并且长度这么长

python的大数计算是如何做的,为何这么快,并且长度这么长
我这两天才学习python,在python上试了下6789的100000次方,结果也是几秒钟就出来了,满屏的结算结果,让我这本来学习c++的人震精了。python计算大数的时候是用的什么计算方法,效率这么高?我感觉用c模拟竖式计算也没有这么快啊。
------解决思路----------------------
大数运算很多脚本都支持的了,如果真感兴趣可以看它源代码啊,这就是选择开源的一项便利~
------解决思路----------------------
完全可以用Python来wrap你用C++写的BigDecimal库。

------解决思路----------------------
引用:
我这两天才学习python,在python上试了下6789的100000次方,结果也是几秒钟就出来了,满屏的结算结果,让我这本来学习c++的人震精了。python计算大数的时候是用的什么计算方法,效率这么高?我感觉用c模拟竖式计算也没有这么快啊。


1. 使用连续平方的算法,100000次方大约需要做log(100000)即约20次乘法,不算啥。你看到的几秒钟主要用在输出上。实际计算只用了几秒。


In [26]: %time a = 6789**100000
CPU times: user 0 ns, sys: 0 ns, total: 0 ns
Wall time: 6.2 µs
In [27]: a # 显示a,几秒钟后屏幕上出来一堆数字
...


2. python的高精度运算也是在底层用c实现的。

3. 专门做高精度运算的函数库如gmp,python的实现等都是经过高度优化过的,比我们随便写的大数运算代码肯定要快。
------解决思路----------------------
python+C python和C/c++的兼容很完美