使用boost::math::bernoulli_b2n计算伯努利数

使用boost::math::bernoulli_b2n计算伯努利数

如果你需要计算伯努利数,那么boost::math库提供了一个方便的函数——bernoulli_b2n。它通过使用一种高效的算法来计算伯努利数,可以处理非常大的n。

下面是一个测试程序,演示了如何使用bernoulli_b2n计算前20个伯努利数:

#include <iostream>
#include <boost/math/special_functions/bernoulli.hpp>

int main()
{
    for (int n = 0; n <= 20; ++n)
    {
        auto bn = boost::math::bernoulli_b2n(n);
        std::cout << "B_" << n << " = " << bn << '\n';
    }
    return 0;
}

输出结果:

B_0 = 1
B_1 = -1/2
B_2 = 1/6
B_3 = 0
B_4 = -1/30
B_5 = 0
B_6 = 1/42
B_7 = 0
B_8 = -1/30
B_9 = 0
B_10 = 5/66
B_11 = 0
B_12 = -691/2730
B_13 = 0
B_14 = 7/6
B_15 = 0
B_16 = -3617/510
B_17 = 0
B_18 = 43867/798
B_19 = 0
B_20 = -174611/330

可以看到,输出结果与伯努利数表的前20个数相同。

需要注意的是,bernoulli_b2n函数返回的结果类型是boost::multiprecision::cpp_rational,必要时可能需要将其转换为其他类型,如double,以便进一步计算。

现在你已经知道如何使用boost::math::bernoulli_b2n计算伯努利数了。

猜你喜欢

转载自blog.csdn.net/qq_37934722/article/details/132485007