gpt4 book ai didi

java - 下面这段 Java 代码是如何计算 Pi 的位数的?

转载 作者:搜寻专家 更新时间:2023-11-01 01:27:57 26 4
gpt4 key购买 nike

下面的代码使用了哪个算法/公式?

    /**
* Computes the nth digit of Pi in base-16.
*
* If n < 0, return -1.
*
* @param n The digit of Pi to retrieve in base-16.
* @return The nth digit of Pi in base-16.
*/
public static int piDigit(int n) {
if (n < 0) return -1;

n -= 1;
double x = 4 * piTerm(1, n) - 2 * piTerm(4, n) -
piTerm(5, n) - piTerm(6, n);
x = x - Math.floor(x);

return (int)(x * 16);
}

private static double piTerm(int j, int n) {
// Calculate the left sum
double s = 0;
for (int k = 0; k <= n; ++k) {
int r = 8 * k + j;
s += powerMod(16, n-k, r) / (double) r;
s = s - Math.floor(s);
}

// Calculate the right sum
double t = 0;
int k = n+1;
// Keep iterating until t converges (stops changing)
while (true) {
int r = 8 * k + j;
double newt = t + Math.pow(16, n-k) / r;
if (t == newt) {
break;
} else {
t = newt;
}
++k;
}

return s+t;
}

此代码已在我们的问题集中为我们编写。我找不到它使用的算法/公式,对此我很好奇。我怀疑这是一个简单的算法,但我无法仅根据这段代码在网上找到公式。

最佳答案

据我所知,在不知道第 (n-1) 位的情况下计算 pi 的第 n 位是 Bailey-Borwein-Plouffe-Algorithm。此处 pi 的表示以 base-16 为基数。

Formula to calculate the Nth digit of pi

查看百利主页:http://crd-legacy.lbl.gov/~dhbailey/

关于java - 下面这段 Java 代码是如何计算 Pi 的位数的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12449430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com