20

我试过使用

long long int

但它不适用于像 3141592653589793238462643383279502884197169399375 这样的数字,我需要这个高达 10 ^ 80。知道吗?让我知道。非常感谢。

4

1 回答 1

31

您不能为此使用任何内置整数类型。您需要一个“多精度整数”又名“bignum”库。对于 C++,我会首先尝试Boost.Multiprecision,但请注意,Boost 可能比它的价值要麻烦得多,特别是如果您使用的模块具有任何共享库(又名 DLL)组件。另一个明显的选择是GNU MP。它只有一个 C 接口,但维护良好、可靠、快速且非常受欢迎(事实上,Boost.MP 似乎“只是”它的 C++ 包装器!)

警告:您可能需要一个 bignum 库,因为您正在尝试实现使用大量数字的加密原语之一,例如RSA不要这样做。通用的 bignum 库对于加密使用是不安全的,即使它们是安全的,你仍然会犯许多微妙的错误,这会破坏你的安全性。改用经过良好测试的密码库;对于 C++,我推荐Botan

于 2013-03-14T02:26:32.900 回答