代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
计算Pi的代码
作者:
Moyo
/ 发布于
2013/1/15
/
481
<?php /** * 圆周率计算(BBP) * @author Moyo <moyo@uuland.org> * @url http://moyo.uuland.org/code/php-pi-calc/ * @version 1.0 * @date 2013.01.12 */ class pi { public static function calc($__N__) { $n = (int)$__N__; $av = $a = $vmax = $N = $num = $den = $k = $kq = $kq2 = $t = $v = $s = $i = 0; $sum = 0.0; $N = (int)(($n + 20) * log(10) / log(2)); $sum = 0; for ($a = 3; $a <= (2 * $N); $a = self::next_prime($a)) { $vmax = (int)(log(2 * $N) / log($a)); $av = 1; for ($i = 0; $i < $vmax; $i ++) { $av = ($av * $a); } $s = 0; $num = 1; $den = 1; $v = 0; $kq = 1; $kq2 = 1; for ($k = 1; $k <= $N; $k ++) { $t = $k; if ($kq >= $a) { do { $t = (int)($t / $a); $v --; } while (($t % $a) == 0); $kq = 0; } $kq ++; $num = self::mul_mod($num, $t, $av); $t = (2 * $k -1); if ($kq2 >= $a) { if ($kq2 == $a) { do { $t = (int)($t / $a); $v ++; } while (($t % $a) == 0); } $kq2 -= $a; } $den = self::mul_mod($den, $t, $av); $kq2 += 2; if ($v > 0) { $t = self::inv_mod($den, $av); $t = self::mul_mod($t, $num, $av); $t = self::mul_mod($t, $k, $av); for ($i = $v; $i < $vmax; $i ++) { $t = self::mul_mod($t, $a, $av); } $s += $t; if ($s >= $av) { $s -= $av; } } } $t = self::pow_mod(10, ($n - 1), $av); $s = self::mul_mod($s, $t, $av); $sum = (double)fmod((double)$sum + (double)$s / (double)$av, 1.0); } return array( 'n' => $n, 'v' => sprintf('%09d', (int)($sum * 1e9)) ); } private static function next_prime($n) { do { $n ++; } while (!self::is_prime($n)); return $n; } private static function is_prime($n) { $r = $i = 0; if (($n % 2) == 0) { return 0; } $r = (int)(sqrt($n)); for ($i = 3; $i <= $r; $i += 2) { if (($n % $i) == 0) { return 0; } } return 1; } private static function mul_mod($a, $b, $m) { return fmod((double)$a * (double)$b, $m); } private static function inv_mod($x, $y) { $q = $u = $v = $a = $c = $t = 0; $u = $x; $v = $y; $c = 1; $a = 0; do { $q = (int)($v / $u); $t = $c; $c = $a - $q * $c; $a = $t; $t = $u; $u = $v - $q * $u; $v = $t; } while ($u != 0); $a = $a % $y; if ($a < 0) { $a = $y + $a; } return $a; } private static function pow_mod($a, $b, $m) { $r = $aa = 0; $r = 1; $aa = $a; while (1) { if ($b & 1) { $r = self::mul_mod($r, $aa, $m); } $b = $b >> 1; if ($b == 0) { break; } $aa = self::mul_mod($aa, $aa, $m); } return $r; } } ?>
试试其它关键字
计算Pi
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Moyo
贡献的其它代码
(
1
)
.
计算Pi的代码
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3