可以计算BigInt.pow(&BigInt)吗?

问题描述 投票:0回答:1

我要计算:

let n1 = BigInt(256);
let n2 = BigInt(1024);
let n3 = BigInt(3);
let n4 = BigInt(40);

let res = n1.pow(n2.pow(n3) * n4);
let len = res.to_string().len();

我尝试了

num
crate,但它的
pow()
方法仅支持 u32 作为指数。有没有支持 BigInt 作为指数的板条箱?还是太大而无法计算?

math rust biginteger
1个回答
0
投票

不是

BigInt.pow(&BigInt)
的答案,而只是这个特定问题的答案。这篇文章中的问题是“这个数字有多少位?”它可以转化为数学问题。

首先简化这个表达式。

BigInt(256).pow(BigInt(1024).pow(BigInt(3)) * BigInt(40))
=> 256 ^ (1024 ^ 3 * 40)
=> 2 ^ (2^36 * 5)

“有多少位”可以通过十进制数“log(10, X)”来计算。

log(10, 2 ^ (2^36 * 5))
= 2 ^ 36 * 5 * log(10, 2)

这很容易计算。结果大约是

103433118919.34569

© www.soinside.com 2019 - 2024. All rights reserved.