用于计算大因子的商的C++程序

xbo*_*nez 9 c++

如何编写c ++程序来计算大因子.

例如,如果我想计算(100!)/(99!),我们知道答案是100,但如果我分别计算分子和分母的阶乘,那么这两个数字都是巨大的.

fra*_*nkc 14

扩展Dirk的答案(这是正确的答案): __CODE__'y town


Dir*_*tel 6

您可以使用Gamma功能,请参阅维基百科页面,该页面也指向代码.


Cub*_*bbi 5

当然,这个特殊的表达式应该进行优化,但至于标题问题,我喜欢GMP,因为它提供了一个不错的C++界面,并且很容易获得.

#include <iostream>
#include <gmpxx.h>

mpz_class fact(unsigned int n)
{
        mpz_class result(n);
        while(n --> 1) result *= n;
        return result;
}

int main()
{
        mpz_class result = fact(100) / fact(99);
        std::cout << result.get_str(10) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

用Linux编译 g++ -Wall -Wextra -o test test.cc -lgmpxx -lgmp