Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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计算大数_Python - Fatal编程技术网

如何用python计算大数

如何用python计算大数,python,Python,我正在寻找在python上计算大数字 但它不能 像这样: 999999999999999999999999999999999999999999999999**999999999999999999999999999999999999999999999999999999999999999999999999999999您可以尝试使用决策模块。 可以找到 Python支持长整数,因此您可以只打印表达式。它可能没有GMP或其他库那么有效,但您想要做的问题是无法计算该值: 10**35-1**10**52-

我正在寻找在python上计算大数字 但它不能

像这样:

999999999999999999999999999999999999999999999999**999999999999999999999999999999999999999999999999999999999999999999999999999999

您可以尝试使用决策模块。 可以找到


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);
    }
}