gpt4 book ai didi

c# - BigInteger.Pow(BigInteger,BigInteger)?

转载 作者:行者123 更新时间:2023-11-30 13:30:40 29 4
gpt4 key购买 nike

我正在尝试计算一个大数,这需要 BigInteger.Pow(),但我需要指数也是 BigInteger 而不是 整数

BigInteger.Pow(BigInteger)

我怎样才能做到这一点?

编辑:我想出了一个答案。用户dog帮助我实现了这一目标。

public BigInteger Pow(BigInteger value, BigInteger exponent)
{
BigInteger originalValue = value;
while (exponent-- > 1)
value = BigInteger.Multiply(value, originalValue);
return value;
}

最佳答案

仅从一般数学的角度来看,这是没有意义的。这就是它没有实现的原因。

想想这个例子:您的 BigInteger 数字是 2 并且您需要将它增强 1024。这意味着结果是一个 1 KB 的数字 (2^1024 ).现在假设您采用 int.MaxValue:那么,您的数字将已经消耗 2 GB 的内存。使用 BigInteger 作为指数会产生超出内存容量的数字!


如果您的应用程序需要这种比例的数字,而数字本身对于您的内存来说太大了,您可能需要一个单独存储数字和指数的解决方案,但我只能推测这一点,因为它不是你的问题。


如果您的问题是您的指数变量是 BigInteger,您可以将它转换为 int:

BigInteger.Pow(bigInteger, (int)exponent); // exponent is BigInteger

关于c# - BigInteger.Pow(BigInteger,BigInteger)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224589/

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