圆周率的数字

2009年2月20日

圆的周长与直径的比值由希腊字母pi所知的常数给出,是一个无理数(其表示形式是非终止且不重复的),其值略大于3.14159。圆周率的千分之一是多少?(计数从零开始,因此零第个pi的位数是3,pi的第四位数是5。)

页:1 2

8对“圆周率的数字”的回应

  1. 马特·韦弗

    我的解决方案,用C编写:

    http://codepad.org/WOEQnbTt

    此版本根据“计算低内存pi的第n位小数”中描述的方法直接计算所请求的数字:http://numbers.computation.free.fr/Constants/Algorithms/nthdecimaldigit.pdf(我必须承认,我也稍微看了一下http://numbers.computation.free.fr/Constants/Algorithms/nthdigit.html)

    它缺乏插口解决方案的简洁和优雅,但在效率上弥补了它的不足。插口版本运行良好,直到主内存用完并开始分页,此时性能真的遇到了瓶颈。在我的电脑上,这一点介于第20000位(取1:48)和第50000位(我在3.5小时后将其删除)之间。为了进行比较,此解决方案在约12秒内返回第50000位。

  2. 编程实践

    Alexander J.Yee和Shigeru Kondo最近计算的圆周率的5万亿位数。

  3. 格雷厄姆

    我修改了arccot found的定点方法
    在这里
    并将其与维基百科发现的最有效的机器式公式结合使用
    在这里
    我的提交

  4. 这似乎是一个非常有趣的练习,但我无法理解这个插口算法是如何工作的。我读了PDF文件,但我无法理解图表中的数学,对于一个没有大量数学背景的人来说,有更容易的解释吗?

    干杯,
    -萨姆

  5. 虽然不好看,但很管用:


    #!/usr/bin/perl

    $| = 1;

    推(@B,0);

    $计数器=3;
    对于($i=0;$i<=33223;$i++){
    推(@A,$i);
    push(@余数,2);
    push(@B,$counter);
    $计数器+=2;
    }

    对于($x=1;$x=1;$i-){
    $m10[$i]=$余数[$i]*10;
    $sum[$i]=$m10[$i]+$carried[$i];
    $余数[$i]=$总和[$i]%$B[$i];
    $携带[$i-1]=(($sum[$i]-$剩余[$i]/$B[$i])*$A[$i);
    }

    $m10[0]=$余数[0]*10;
    $sum[0]=$m10[0]+$carried[0];
    $余数[0]=$sum[0]%10;
    $predigit=int($sum[0]/10);

    push(@predigits,$predigit);

    如果($predigit<9){
    对于($i=0;$i<((标量@predigits)-1)$i++){
    打印$predigits[$i];
    }
    undef@predigits;
    push(@predigits,$predigit);
    }

    如果($predigit==10){
    对于($i=0;$i<((标量@predigits)-1)$i++){
    if($predigits[$i]==9){打印0;}
    其他{
    $predigits[$i]=$predigins[$i]+1;
    打印$predigits[$i];
    }
    }
    undef@predigits;
    push(@predigits,0);
    }
    }

  6. 大卫

    Python语言:

    定义pi_spigot():(q,r,t,k,n,l)=(1,0,1,1,3,3)为True时:如果4*q+r-t<n*t:产量n(q,r,t,k,n,l)=(10*q,10*(r-n*t),t,k,(10*(3*q+r))//t-10*n,l其他:(q,r,t,k,n,l)=(q*k,(2*q+r)*l,t*l,k+1,(q*(7*k+2)+r*l)//(t*l),l+2)定义打印pi(n):数字=pi_spigot()print('pi=',str(next(digits))+'.',结束=“”)当n>0时:打印(str(下一个(数字)),结束=“”)n-=1打印()

    正在运行:

    >>>打印pi(20)pi=3.14159265358979323846>>>打印pi(1000)pi=3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882066521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394639522473719070986094370277053921717629317675238467481846766940513200568127145263560827785771342757789609173637178721468440901224953430149585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302425223082533446850352619311881710100031378387528658753328381420617177669147303598253490428755468731159562863888235378759375195778185778053217122680661300192787661111959092164201989
  7. 大卫

    好奇的是,前1000个数字都是(从最后一个帖子上跑掉了……)

    >>>打印pi(1000)pi=3.141592653589793238462643383279502884197169399310582097494459230781640628698980348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989

留下评论