gpt4 book ai didi

math - 计算机如何评估巨大的数字?

转载 作者:行者123 更新时间:2023-12-02 12:53:03 27 4
gpt4 key购买 nike

例如,如果我输入一个值

1234567 ^ 98787878 

进入 Wolfram Alpha 它可以为我提供许多细节。这包括十进制近似值总长度最后一位数字等。您如何评估这么大的数字?据我了解,编程语言必须具有特殊的数据类型才能存储数字,更不用说将其添加到其他内容中。虽然我可以看到如何将两个非常大的数字相加,但我看不到如何计算巨大的数字。

10^2可以通过重复加法计算出来。然而,像上面的例子这样的数字将需要一个巨大的循环。有人可以解释一下如何评估这么大的数字吗?另外,例如,如何创建自定义大数据类型来支持 C# 中的大数字?

最佳答案

嗯,这很简单,你可以自己完成

  1. 位数可以通过对数获得:
since `A^B = 10 ^ (B * log(A, 10))` 

在我们的例子中,我们可以计算出(A = 1234567; B = 98787878)

 `B * log(A, 10) = 98787878 * log(1234567, 10) = 601767807.4709646...`

integer part + 1 (601767807 + 1 = 601767808) is the number of digits

  • 第一个,比如数字也可以通过对数得到;现在我们应该分析的小数部分

    B * log(A, 10) = 98787878 * log(1234567, 10) = 601767807.4709646...

    f = 0.4709646...

    first digits are 10^f (decimal point removed) = 29577...

  • 最后,比如说,可以获取数字作为相应的余数:

    最后五位数字= A^B rem 10^5

    雷姆 10^5 = 1234567 雷姆 10^5 = 34567

    A^B rem 10^5 = ((A rem 10^5)^B) rem 10^5 = (34567^98787878) rem 10^5 = 45009

    last five digits are 45009

    您可能会发现BigInteger.ModPow (C#) 在这里非常有用

  • 终于

    1234567^98787878 = 29577...45009(601767808 位)

    关于math - 计算机如何评估巨大的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18333967/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com