ron*_*on8 4 math programming-languages digits
如何做到以下几点是最好的方法.
输入一个很长的数字,可以说是500,000位数,而不是科学记数法; 然后我能用它做数学,比如+2等?
先感谢您.
编辑:这是一个500,000位正整数.
Python本身相当不错,但更好用gmpy(它将其连接到其他人提到的GMP库,或者交替使用MPIR有点类似[[正在进行的工作;-)]].考虑:
$ python -mtimeit -s'x=int("1"*9999); y=int("2"*9999)' 'x*y'
100 loops, best of 3: 6.46 msec per loop
Run Code Online (Sandbox Code Playgroud)
即,在纯Python中,乘以两个10K位的整数需要6.5毫秒左右.和...:
$ python -mtimeit -s'from gmpy import mpz; x=mpz("1"*9999); y=mpz("2"*9999)' 'x*y'
1000 loops, best of 3: 326 usec per loop
Run Code Online (Sandbox Code Playgroud)
......随着手头的gmpy,操作将快20倍左右.如果你有数百个而不是数千个数字,那就更极端了:
$ python -mtimeit -s'x=int("1"*199999); y=int("2"*199999)' 'x*y'
10 loops, best of 3: 675 msec per loop
Run Code Online (Sandbox Code Playgroud)
VS
$ python -mtimeit -s'from gmpy import mpz; x=mpz("1"*199999); y=mpz("2"*199999)' 'x*y'
100 loops, best of 3: 17.8 msec per loop
Run Code Online (Sandbox Code Playgroud)
因此,拥有20万个数字而不仅仅是10k,gmpy的速度优势是38倍左右.
如果你经常需要处理这么大的整数,那么Python + gmpy实际上是一个可行的解决方案(当然我有偏见,因为我在过去几年里做过和关心gmpy正是因为我♥Python(嘿,我的执照)板为P♥马拉松- - !) ,并在我的爱好(组合运算)之一,我也有相当经常处理这样的数字;-).