我要找的蟒蛇 计算大的数字计算大的数字,但它不能。我怎么能在Python
这样的:
9999999999999999999999999999999999 ** 999999999999999999999999999999999999999999999999999
我要找的蟒蛇 计算大的数字计算大的数字,但它不能。我怎么能在Python
这样的:
9999999999999999999999999999999999 ** 999999999999999999999999999999999999999999999999999
Python支持长整型,所以你可以只打印表达。这可能是不是GMP或其他图书馆,但你想要做什么的问题,有效的是,它是不可能计算该值:
(10**35 - 1) ** (10**52 - 1)
约为10 ** (35 * 10**52)
其中包含有关10**52
数字。
让我们考虑一个存储芯片有多大,我们可以假设manifacture。月球的质量约为7.34767309 * 10^22
千克,电子的质量为9.10938188 * 10^(-31)
千克。让我们假设我们可以使用电子来保存一个十进制数字。这意味着使用月球作为记忆,我们可以使用大约8.066050130286116 * 10^52
个电子。
这是什么意思?如果你的超级RAM芯片和月球一样大,你就可以计算出这个数字。如果你懂了,那对你很好,否则如果你是一个凡人,你根本无法希望拥有足够的记忆。
DecInt
模块可以帮助您处理100k-数百万位数字的数字,但不止如此,您需要特定的硬件和更大的数字(如您所展示的示例)根本无法实现。
你为什么不作出号码作为字符串 ,使功能,做类似的事情作为人的手,用绳子倍增。
假设你让2串 “99876” 和 “123”
,并str_multiply功能 这需要2参数作为参数
的后者获取字符串长度。 “123”上的3个字符做所以它是3(忽略空字符) 这里是伪代码
len_2 = string_len(latter);
len_1 = string_len(former);
flag = 0;
result_string = "";
for(i=len_2-1;i>=0;i--)
{
for(k=len_1;k>=0;k--)
{
a = alphabet_to_integer(latter[i]);
b = alphabet_to_integer(former[k]);
c = a*b;
c = c * 10 + flag;
flag = c/10;
ch = integer_to_alphabet(c%10);
result_string = concat(ch,result_string);
}
}
,如果你想不只是2号,但10号(或更多) 你可以调用一次又一次str_multiply函数。
这是我第一次回答别人的问题。 所以我希望这个帮助比平常更多 谢谢!
你知道你的计算结果是10^52位的数字? – halex