Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 用python打印一个非常大的数字需要很长时间_Python 3.x_Performance_Largenumber - Fatal编程技术网

Python 3.x 用python打印一个非常大的数字需要很长时间

Python 3.x 用python打印一个非常大的数字需要很长时间,python-3.x,performance,largenumber,Python 3.x,Performance,Largenumber,我想计算一个非常大的数字,因为python支持任意大的数字,所以我认为这是完美的 这就是: import math x=2**24 y=3840*2160 z=x**y print("z is calculated") print(z) 我最后看到的是“z是计算的”,所以问题不在于计算本身 但即使一个小时后,我也看不到任何其他输出 有人能解释一下这里发生了什么吗 PS:z大约有6000万个数字…所以,这是预期的行为,“无法修复” 将整数转换为字符串的算法具有二次复杂度,由于这种情况很少发生,因

我想计算一个非常大的数字,因为python支持任意大的数字,所以我认为这是完美的

这就是:

import math
x=2**24
y=3840*2160
z=x**y
print("z is calculated")
print(z)
我最后看到的是“z是计算的”,所以问题不在于计算本身

但即使一个小时后,我也看不到任何其他输出

有人能解释一下这里发生了什么吗


PS:z大约有6000万个数字…

所以,这是预期的行为,“无法修复”

将整数转换为字符串的算法具有二次复杂度,由于这种情况很少发生,因此需要进行大量的改进

作为一种解决方法,建议我使用类似GMP的软件包,这似乎更适合


我只希望这不会为攻击者提供此类数字作为输入的服务器开启DOS攻击之门。如果服务器想要记录该数字以冻结,这就足够了。

那么在打印出6000万位数字后,您将怎么做?全部检查?数字至少为25GB。你到底为什么要打印它?这个数字大约有6000万位,所以它的输出应该是60MB。我真的不想对这个数字做任何事情,我只是为了好玩而计算它,结果遇到了性能问题。@U.W:这就像让一个人骑自行车从南非到瑞典,然后说这是一个问题“性能问题”是指可怜的家伙在10分钟内没有到达。要打印这样的数字,你必须找到每个数字除以10的余数,即使使用“乘以预先计算的倒数”方法(摩托车而不是python自行车),C和汇编的高度优化混合也是如此这仍然需要非常长的时间。