我的主要问题是: 这有很多循环吗?
while ($decimals < 50000 and $remainder != "0") {
$number = floor($remainder/$currentdivider); //Always round down! 10/3 =3, 10/7 = 1
$remainder = $remainder%$currentdivider; // 10%3 =1, 10%1
$thisnumber = $thisnumber . $number;
$remainder = $remainder . 0; //10
$decimals += 1;
}
或者我可以更适合它吗? - 没有服务器崩溃/滞后。
我只是想知道, 还有一种更有效的做法吗? (例如,输出1/3 = 0.3到50,000小数。)
最后:
我正在为pi公式(1 - 1/3 + 1/5 - 1/7等)做这个,
我想知道是否有更好的一个。 (在PHP中) 我找到了一个在4秒内找到pi到2000的人。
但那不是我想要的。我想要一个接近Pi的无限系列
所以每次刷新,用户都可以看到它越来越近了......
但是obv。使用上述公式收敛需要花费很长时间。
是否有任何其他'循环'像Pi公式(可在PHP中使用)更快收敛?
非常感谢...
答案 0 :(得分:2)
这里有几个计算Pi的公式:
http://mathworld.wolfram.com/PiFormulas.html
所有这些都在PHP中“可行”,就像在任何其他编程语言中一样。另一个问题是它们的速度有多快或者实施起来有多困难。
如果公式收敛得更快或更慢,这是一个数学问题,而不是关于编程,所以我无法帮助你。我可以告诉你,作为一个拇指规则,你放置的嵌套循环越少,你的算法就越快(这是一般规则,不要把它当作绝对真理!)
无论如何,由于Pi的数字在某个数字之前是已知的,为什么不将它复制到文件中然后将其编入索引呢?这将是非常快的:)
您可以查看以前类似问题的答案: How can pi be calculated to a set number of digits in PHP? https://stackoverflow.com/questions/3045020/which-is-the-best-formulae-to-find-pi
答案 1 :(得分:1)
检查http://mathworld.wolfram.com/PiIterations.html(取自上一个答案)。这些公式使用迭代,因此可以使用循环实现。 您应该使用谷歌搜索“php implementation xxxxxxx”(其中xxxxxx代表您要搜索的算法名称)。
编辑:Here is an implementation of Vietas formula using a while-loop in php.