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

刷一个算法题,需要进行 30000 长度范围内( 1e30000 )的整数运算,我寻思难不成还要我自己实现一个大数的加减乘除?结果 python 居然自带这个功能。从 c 语言入门计算机的我甚至都不敢这么想。下面是例子:
运行代码: a=10000000000000004321000000000000000001234433 b = a//2 print(b)
得到输出: 5000000000000002160500000000000000000617216
1 Perry Sep 14, 2022 > There is no limit for the length of integer literals apart from what can be stored in available memory. https://docs.python.org/3/reference/lexical_analysis.html#integer-literals |
2 kennylam777 Sep 14, 2022 所以 Python 是算及金融算的首, 先把算法好不用考元件的作方式 |
3 leimao Sep 14, 2022 。。。这个是 Python 一个很著名的 feature |
4 thinkershare Sep 14, 2022 现在是 2022 年了, Javascript 一样支持任意长度的整数, 顺便说一下, 并不是任意长度, 有内存限制的 |
5 ColorfulBoar Sep 14, 2022 有没有可能……这个算法题……就是让你练习手写大数运算的? |
6 SingeeKing PRO @thinkershare 不支持; js 只是浮点数而已,和 Python 完全不一样 |
7 fgwmlhdkkkw Sep 14, 2022 via Android @SingeeKing Bigint |
8 lysS Sep 14, 2022 厉害吗? 性能换的 |
9 lakehylia Sep 14, 2022 java 也有 BigInt |
10 lysS Sep 14, 2022 @kennylam777 #2 其他语言都有 big numbers 吧? |
11 thinkershare Sep 14, 2022 @lysS 2022 年不支持 big int 的语言才是少数, 主要是这个玩意性能差的要死. 特别是 Python 3 还合并了普通的 int 和 long, 反正 python 中所有的方便之处都是靠巨大性能代价换来的, 导致很多人写出来的 python 代码已经没救了, 因为到处都是性能的坑, 随便写一下就是 O(n)以上的复杂度, |
12 MoYi123 Sep 14, 2022 @thinkershare 时间复杂度和编程语言有什么关系? |
13 laqow Sep 14, 2022 @kennylam777 大概仅限的原生 python 函数,统计的事还是得 R 和 matlab 。numpy 一个 type 写错翻车的地方都找不到。 |
15 dcsuibian Sep 14, 2022 via Android 坐下,高级语言常规操作 |
16 Jirajine Sep 14, 2022 @thinkershare big decimal literal 怎么就影响性能了。Python 性能最让人诟病的地方是 GIL ,为了简单方便的 c API 而牺牲性能。你要说复杂度 js 更差,没有专门的 iterator ,数组的 map/filter 等函数都是非 lazy 的。 |
17 AV1 Sep 14, 2022 via Android @SingeeKing JS 已经内置 BigInt 了 |
18 zthxxx Sep 14, 2022 |
19 lysS Sep 14, 2022 @thinkershare #11 我是说以一个包或者库函数之类的方式支持 |
20 dqzcwxb Sep 14, 2022 这难道不是语言最基本的吗? |
21 lizytalk Sep 14, 2022 这是 Python 的一个很重要的 feature 。另外这个算法题的本意应该是让你练习大数计算的(虽然这件事用 python 写确实怪怪的) |
22 zznext Sep 14, 2022 我 C++ STL 支持大整数 |
23 laolaowang Sep 14, 2022 @thinkershare 你这是从哪学来的知识? |
24 laolaowang Sep 14, 2022 @laolaowang 请忽略,看了半句话 |
25 hxysnail Sep 14, 2022 想不想知道它是怎么实现的,我前面写过 Python 整数的源码剖析,哈哈 int 对象,永不溢出的整数: https://fasionchan.com/python-source/builting-object/int/ int 源码解析:如何实现大整数运算: https://fasionchan.com/python-source/builting-object/int-src/ |
27 Vegetable Sep 14, 2022 看这个贴子感觉有点好笑,又感叹人的知识是非常有限的。且不说什么高深的知识。就算是这种几乎大家都知道的常识,也一定有人不知道。笑不出来了呀 |
28 SteveLi77 Sep 14, 2022 另外一个有趣的点是 python 乘法使用的是 Karatsuba multiplication ,复杂度只有 3n^log3 ( |
29 documentzhangx66 Sep 14, 2022 其实就是大整数。 地球上最好的大整数库应该是 c/cpp 的 gmp 。 |
30 alsas Sep 14, 2022 这是 Python 一个非常牛逼的语言特性 |
32 flynaj Sep 15, 2022 via Android Python 全部都是对象,非常方便,就是性能开销大一些 |