1

我正在寻找一种算法,该算法需要对两个不合理的大数(均为数千位长)进行除法。

python 或 c++(或程序集)中是否已经存在一个库来执行此操作?甚至可能吗?

没有任何时间限制或任何东西

4

2 回答 2

3

Python 已经支持大整数,所以唯一缺少的功能是有理数。这是由分数模块提供的:

from fractions import Fraction
>>> print float( Fraction(2**54343) / Fraction( 2**54347 + 1 ) )
0.0625
>>> print Fraction(2**54343) / Fraction( 2**54347 + 1 )
# ... very long exact answer expressed as a fraction ...
于 2013-06-04T09:49:43.140 回答
2

在 C++ 中,您可以使用Boost.Multiprecision库:

多精度库在 C++ 中提供整数、有理数和浮点类型,它们比 C++ 的普通内置类型具有更大的范围和精度

例子:

#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_1000 f1(std::move(s));
    boost::multiprecision::mpfr_float_1000 f2 = f1 / 42;
    std::cout << f2.str() << std::endl;

    return 0;
}
于 2013-06-04T09:50:15.497 回答