C ++中100位数字的平方根

时间:2013-04-14 11:02:48

标签: c++ square-root

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

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

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

根据你的家庭作业是否可以使用预制的lib来处理bignums