C++中计算一个100位数的平方根

4

'unsigned long long'可以解决15位数字。

有没有一种方法可以找到一个100位数字的平方根?


1
我知道这可能不是你想要的,但是如果你不需要精确的结果,你可以使用“double”。 - Detheroc
2
@Detheroc 这将是计算实际值的好方法,可以使用像牛顿法这样的算法作为第一步。 - didierc
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;
}

3

当然。一个简单的方法是使用GNU多精度库的mpz_sqrt()函数。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接