4

'unsigned long long'最多可以解出 15 位数字。

有没有办法找到100位数字的平方根?

4

3 回答 3

4

您还可以使用Boost.Multiprecision库。这个库为一些流行的多精度实现提供了包装器。

#include <iostream>
#include <string>
#include <utility>

#include <boost/multiprecision/mpfr.hpp>

int main()
{
    std::string s(100, '0');
    s.at(0) = '1';
    boost::multiprecision::mpfr_float_100 f(std::move(s));
    boost::multiprecision::mpfr_float_100 sqrt = boost::multiprecision::sqrt(f);
    std::cout << sqrt.str() << std::endl;

    return 0;
}
于 2013-04-14T11:44:52.820 回答
3

确实。一种简单的方法是使用 GNU 多精度库的mpz_sqrt()函数。

于 2013-04-14T11:04:57.403 回答
3

这个问题与 C++ 并没有真正的关系,但这里有一个您可以使用的方法列表http://en.wikipedia.org/wiki/Methods_of_computing_square_roots

取决于它的功课与否,您也许可以使用预制库来处理 bignums

于 2013-04-14T11:05:18.870 回答