【发布时间】:2017-09-11 18:12:02
【问题描述】:
需要存储非常大的整数,所以我使用 boost::multiprecision::cpp_int。问题是,在使用这种新类型时,我无法弄清楚如何使用它从 pow() 和 rand() 等其他函数中获取我想要的值。
我需要存储一个非常大的数字,该数字是通过指数计算的。但 pow() 函数本身无法处理如此大的数字,而 rand() 返回基本整数。
更具体地说,我只需要存储值 2^1024 并生成一个介于 1 和 2^1024 之间的随机数。但我一直在努力让它发挥作用。
cpp_int x = pow(2,1024);
x = rand() % x + 1;
由于我上面所说的原因,这样的东西不起作用。我也尝试过 boost::multiprecision::pow,但这似乎不适用于 cpp_int。为了让这些相对简单的操作适用于大整数,我需要跳过哪些环节?
【问题讨论】:
-
我之前确实看到过这些,但我注意到它们使用了不同的类型“整数”,而不是 cpp_int。 boost.Integer 也可以用于像 cpp_int 这样的大数字吗?
-
Integer是函数模板的模板类型参数。cpp_int满足Integer的类型要求,因此函数模板可以与cpp_int类型的值一起使用。