圆周率洗脑歌算法。

算法的威力:法国人用台式机打破由超级计算机创造的圆周率运算世界记录
法国人Fabrice Bellard最近使用一台普通的台式电脑,完成了冲击由超级计算机保持的圆周率运算记录的壮举,他使用台式机将圆周率计算到了小数点后2.7万亿位,超过了由目前排名世界第47位的T2K Open超级计算机于去年8月份创造的小数点后2.5万亿位的记录。
Bellard使用的电脑是一台基于2.93GHz Core i7处理器的电脑,这部电脑的内存容量是6GB,硬盘则使用的是五块RAID-0配置的1.5TB容量的希捷7200.11,系统运行64位Red Hat Fedora 10操作系统,文件系统则使用Linux的ext4.
这次计算出来的圆周率数据占去了1137GB的硬盘容量,Bellard花了103天的时间计算出了这样的结果。
不过在这次计算过程中,为了保住排名第一的位置,Bellard在数据验证阶段使用了9台联网的电脑来对数据进行验证,以便加快计算完成的速度,而如果使用那台电脑来验证计算结果的话,则需要额外再增加13天的计算时间。
在计算圆周率的过程中,Bellard使用改良后的查德诺夫斯基方程算法来进行圆周率的计算,并使用贝利-波温-劳夫算法来验证计算的结果。
为了纪念他对圆周率算法所做出的贡献,这次Bellard所使用的改良型查德诺夫斯基方程算法被命名为Bellard算法,这种算法是目前所有圆周率算法中最快的一种。不仅如此,Bellard先生过去还以编写了tcc编译器而在Linux社群中享有盛名。
CNBeta编译
[责任编辑:dryiceboy]
-5-4-3-2-1012345
当前平均分: 打分后显示
-5-4-3-2-1012345
当前平均分: 打分后显示
Advertisment ad adsense googles记住登录一个月发表随想还能输入:200字该用户最新代码编程随想&by by by by by by [c]代码库#include &stdio.h&
#define L 10000 //求10000位PI值
#define N L/4+1
// L 为位数,N是array长度
/*圆周率后的小数位数是无止境的,如何使用电脑来计算这无止境的小数是一些数学家与程式设计师所感兴趣的,在这边介绍一个公式配合 大数运算,可以计算指定位数的圆周率。
J.Marchin的圆周率公式:
PI = [16/5 - 16 / (3*53) + 16 / (5*55) - 16 / (7*57) + ......] -
[4/239 - 4/(3*2393) + 4/(5*2395) - 4/(7*2397) + ......]
void add ( int*, int*, int* );
void sub ( int*, int*, int* );
void div ( int*, int, int* );
int main ( void )
int s[N+3] = {0};
int w[N+3] = {0};
int v[N+3] = {0};
int q[N+3] = {0};
int n = ( int ) ( L/1.39793 + 1 );
w[0] = 16*5;
v[0] = 4*239;
for ( k = 1; k &= k++ )
// 套用公式
div ( w, 25, w );
div ( v, 239, v );
div ( v, 239, v );
sub ( w, v, q );
div ( q, 2*k-1, q );
if ( k%2 ) // 奇数项
add ( s, q, s );
sub ( s, q, s );
printf ( "%d.", s[0] );
for ( k = 1; k & N; k++ )
printf ( "%04d", s[k] );
printf ( "\n" );
void add ( int *a, int *b, int *c )
int i, carry = 0;
for ( i = N+1; i &= 0; i-- )
c[i] = a[i] + b[i] +
if ( c[i] & 10000 )
carry = 0;
c[i] = c[i] - 10000;
carry = 1;
void sub ( int *a, int *b, int *c )
int i, borrow = 0;
for ( i = N+1; i &= 0; i-- )
c[i] = a[i] - b[i] -
if ( c[i] &= 0 )
borrow = 0;
c[i] = c[i] + 10000;
borrow = 1;
void div ( int *a, int b, int *c ) // b 为除数
int i, tmp, remain = 0;
for ( i = 0; i &= N+1; i++ )
tmp = a[i] +
c[i] = tmp /
remain = ( tmp % b ) * 10000;
[代码运行效果截图]分享到:更多发表评论:评论须知:1、评论每次加2分,每天上限为30;2、请文明用语,共同创建干净的技术交流环境;3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。圆周率的计算方法?
人计算圆周率,一般是用割圆法.即用圆的内接或外切正多边形来逼近圆的周长.阿基米德用正96边形得到圆周率小数点后3位的精度;刘徽用正3072边形得到5位精度;鲁道夫用正262边形得到了35位精度.这种基于几何的算法计算量大,速度慢,吃力不讨好.随着数学的发展,数学家们在进行数学研究时有意无意地发现了许多计算圆周率的公式.下面挑选一些经典的常用公式加以介绍.除了这些经典公式外,还有很多其它公式和由这些经典公式衍生出来的公式,就不一一列举了.1、马青公式π=16arctan1/5-4arctan1/239  这个公式由英国天文学教授约翰·马青于1706年发现.他利用这个公式计算到了100位的圆周率.马青公式每计算一项可以得到1.4位的十进制精度.因为它的计算过程中被乘数和被除数都不大于长整数,所以可以很容易地在计算机上编程实现.  还有很多类似于马青公式的反正切公式.在所有这些公式中,马青公式似乎是最快的了.虽然如此,如果要计算更多的位数,比如几千万位,马青公式就力不从心了.2、拉马努金公式  1914年,印度天才数学家拉马努金在他的论文里发表了一系列共14条圆周率的计算公式.这个公式每计算一项可以得到8位的十进制精度.1985年Gosper用这个公式计算到了圆周率的17,500,000位.  1989年,大卫·丘德诺夫斯基和格雷高里·丘德诺夫斯基兄弟将拉马努金公式改良,这个公式被称为丘德诺夫斯基公式,每计算一项可以得到15位的十进制精度.1994年丘德诺夫斯基兄弟利用这个公式计算到了4,044,000,000位.丘德诺夫斯基公式的另一个更方便于计算机编程的形式是:3、AGM(Arithmetic-Geometric Mean)算法  高斯-勒让德公式:  这个公式每迭代一次将得到双倍的十进制精度,比如要计算100万位,迭代20次就够了.1999年9月,日本的高桥大介和金田康正用这个算法计算到了圆周率的206,158,430,000位,创出新的世界纪录.4、波尔文四次迭代式:  这个公式由乔纳森·波尔文和彼得·波尔文于1985年发表,它四次收敛于圆周率.5、bailey-borwein-plouffe算法  这个公式简称BBP公式,由David Bailey,Peter Borwein和Simon Plouffe于1995年共同发表.它打破了传统的圆周率的算法,可以计算圆周率的任意第n位,而不用计算前面的n-1位.这为圆周率的分布式计算提供了可行性.6、丘德诺夫斯基公式  这是由丘德诺夫斯基兄弟发现的,十分适合计算机编程,是目前计算机使用较快的一个公式.以下是这个公式的一个简化版本:
为您推荐:
其他类似问题
扫描下载二维码[切换科目]
以下试题来自:
单项选择题最早提出圆周率的正确计算方法的数学家是(
)。A.刘歆B.刘徽C.何承天D.祖冲之
为您推荐的考试题库
你可能感兴趣的试题
1A.为了保护我们的地球,每年的4月22日被定为“地球日”B.“地球日”最初是由美国人倡议的C.1973年,第一次掀起大规模的以保护地球为宗旨的群众性运动,并从此产生了“地球日”D.最初倡议“地球日”的人是一名学者2A.1911年B.1912年C.1913年D.1914年3A.一自然人只能设立一个一人有限责任公司B.一人有限责任公司的股东不能证明公司财产独立于股东自己财产的,应当对公司债务承担连带责任C.公司注册资本最低限额为人民币10万元,首期出资不得低于注册资本的70%D.公司不设股东会,股东行使股东会职权时作出的决议,应当采用书面形式4A.2009年为国际天文年,主题为“探索我们的宇宙”B.美国总统奥巴马8月25日宣布,将提名现任美联储主席格林斯潘留任C.8月8日首个全国“全民健身日”在北京启动D.2009年中朝友好年开幕式在北京国家大剧院举行,国务院总理温家宝和朝鲜总理金英日共同出席开幕式5A.职权集中,责任明确,行动迅速,减少权力冲突和摩擦B.能集思广益,合乎民主精神,彼此监督,利于克服滥用权力C.能够兼容各种领导体制的长处D.能够消除集权制和分权制的短处
热门相关试卷
最新相关试卷<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 圆周率洗脑歌 的文章

 

随机推荐