如何用python计算大数
我正在寻找在python上计算大数字 但它不能 像这样: 999999999999999999999999999999999999999999999999**999999999999999999999999999999999999999999999999999999999999999999999999999999您可以尝试使用决策模块。 可以找到如何用python计算大数,python,Python,我正在寻找在python上计算大数字 但它不能 像这样: 999999999999999999999999999999999999999999999999**999999999999999999999999999999999999999999999999999999999999999999999999999999您可以尝试使用决策模块。 可以找到 Python支持长整数,因此您可以只打印表达式。它可能没有GMP或其他库那么有效,但您想要做的问题是无法计算该值: 10**35-1**10**52-
Python支持长整数,因此您可以只打印表达式。它可能没有GMP或其他库那么有效,但您想要做的问题是无法计算该值: 10**35-1**10**52-1约为10**35*10**52,包含约10**52位数字
让我们考虑一下我们可以假设的内存芯片有多大。月球的质量约为7.34767309*10^22千克,电子的质量为9.10938188*10^31千克。 让我们假设我们可以用一个电子来保存一个十进制数字。这意味着使用月球作为记忆,我们可以使用大约8.066050130286116*10^52个电子
这是什么意思?如果你有一个像月球一样大的超级内存芯片,你就能计算出这个数字。如果你得到了它,那对你有好处,否则如果你是凡人,你就不能指望有足够的记忆力DecInt模块可以帮助您处理100k或数百万位数的数字,但除此之外,您还需要特定的硬件和更大的数字,因为您所展示的示例根本不可能实现。为什么不将数字设为字符串 并制作类似于人的手的函数,用字符串相乘 假设你有两个字符串 99876和 123 并使str_乘函数 它以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_乘法函数
这是我第一次回答别人的问题。
所以我希望这比平常更有用
谢谢 添加了一个小示例,希望能有所帮助。@OFIRFARCY:您还没有尝试过您的示例,对吗?@thg435我尝试过,只是没有使用这些数字。。。我想这需要一段时间;我认为极限是一个20万位数的结果。你知道你的计算结果是一个10^52位数的数字吗?是的,我也打算这么说。假设他们能够计算出这个数字。打印需要多长时间?好吧,如果他们能够计算,那么打印所需的时间将是可以忽略的,因为你只是在计算中添加了一个更复杂的步骤。尽管如此,我认为这可能要比目前宇宙的年龄还要长。@LorenzMeyer,我编辑过。
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);
}
}