惊了! Python 居然可以计算任意长度的整数

2022-09-14 03:15:25 +08:00
 threebr

刷一个算法题,需要进行 30000 长度范围内( 1e30000 )的整数运算,我寻思难不成还要我自己实现一个大数的加减乘除?结果 python 居然自带这个功能。从 c 语言入门计算机的我甚至都不敢这么想。下面是例子:

运行代码: a=10000000000000004321000000000000000001234433 b = a//2 print(b)

得到输出: 5000000000000002160500000000000000000617216

5810 次点击
所在节点    Python
32 条回复
lizytalk
2022-09-14 14:26:20 +08:00
这是 Python 的一个很重要的 feature 。另外这个算法题的本意应该是让你练习大数计算的(虽然这件事用 python 写确实怪怪的)
zznext
2022-09-14 14:30:27 +08:00
我 C++ STL 支持大整数
laolaowang
2022-09-14 15:01:54 +08:00
@thinkershare 你这是从哪学来的知识?
laolaowang
2022-09-14 15:12:33 +08:00
@laolaowang 请忽略,看了半句话
hxysnail
2022-09-14 15:54:38 +08:00
想不想知道它是怎么实现的,我前面写过 Python 整数的源码剖析,哈哈

int 对象,永不溢出的整数: https://fasionchan.com/python-source/builting-object/int/
int 源码解析:如何实现大整数运算: https://fasionchan.com/python-source/builting-object/int-src/
BrettD
2022-09-14 16:02:28 +08:00
@zznext STL 里面哪个类提供大整数功能?
Vegetable
2022-09-14 16:05:26 +08:00
看这个贴子感觉有点好笑,又感叹人的知识是非常有限的。且不说什么高深的知识。就算是这种几乎大家都知道的常识,也一定有人不知道。笑不出来了呀
SteveLi77
2022-09-14 16:44:37 +08:00
另外一个有趣的点是 python 乘法使用的是 Karatsuba multiplication ,复杂度只有 3n^log3 (
documentzhangx66
2022-09-14 16:50:21 +08:00
其实就是大整数。

地球上最好的大整数库应该是 c/cpp 的 gmp 。
alsas
2022-09-14 16:54:45 +08:00
这是 Python 一个非常牛逼的语言特性
threebr
2022-09-14 17:58:20 +08:00
@Vegetable 是啊,我好歹拿 python 炼丹发过会议,结果这个我真不知道。我要是初学者我也没这么震惊了
flynaj
2022-09-15 00:34:47 +08:00
Python 全部都是对象,非常方便,就是性能开销大一些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/879852

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX