外星人计算pi

Python/PHP/Perl 开发与设计
回复
x671
帖子: 24
注册时间: 2007-07-02 8:39
送出感谢: 0
接收感谢: 0

外星人计算pi

#1

帖子 x671 » 2007-10-01 15:16

请问该代码是通过什么原理计算pi值的?

代码: 全选

#!/usr/bin/python
def pi():
   a=10000
   c=50960
   e=0
   f=[a/5]*(c+1)
   while c>50000:
      d=0
      g=c*2
      b=c
      while 1:
         d+=f[b]*a
         g-=1
         d,f[b]=divmod(d,g)
         g-=1
         b-=1
         if b==0:break
         d*=b
      c-=14
      print str(e+d/a).zfill(4),
      e=d%a
   return
if __name__ == '__main__':
   pi()
$ ./pi.py
3141 5926 5358 9793 2384 6264 3383 2795 0288 4197 1693 9937 5105 8209 7494 4592 3078 1640 6286 2089 9862 8034 8253 4211 7067 9821 4808 6513 2823 0664 7093 8446 0955 0582 2317 2535 9408 1284 8111 7450 2841 0270 1938 5211 0555 9644 6229 4895 4930 3819 6442 8810 9756 6593 3446 1284 7564 8233 7867 8316 5271 2019 0914 5648 5669 2346 0348 6104 5432
头像
stlxv
论坛版主
帖子: 8273
注册时间: 2006-05-03 0:39
来自: المريخ
送出感谢: 0
接收感谢: 1 次

#2

帖子 stlxv » 2007-10-02 0:30

虽然没看内容,不过直觉告诉我,原理就是数学上的某个
pi的展开式
PHP是最好的语言!不服来战!
头像
forrid
帖子: 659
注册时间: 2007-04-23 17:40
送出感谢: 0
接收感谢: 0

#3

帖子 forrid » 2007-10-22 19:28

π的展开式???
看来数学是基础啊。。。

吾生也有涯,而知也无涯,以有涯随无涯,SB啊~~~~~~~~~~
三翻领
帖子: 309
注册时间: 2005-10-15 18:20
送出感谢: 0
接收感谢: 0
联系:

#4

帖子 三翻领 » 2007-10-22 23:45

:D
祖冲之看到这个,一口血喷死...........
头像
ttand
帖子: 1743
注册时间: 2005-08-22 14:05
来自: 离开北京
送出感谢: 1 次
接收感谢: 3 次

#5

帖子 ttand » 2007-11-05 21:16

f(1)=1
f(n+1)=f(n)*n/(2*n+1)
PI/2=f(1)+f(2)+f(3)+.....+f(n)
n->无穷大。

PI={f(1)+f(2)+f(3)+.....+f(n)}*2
错过好多好贴,没占到广告位后悔啊
头像
ttand
帖子: 1743
注册时间: 2005-08-22 14:05
来自: 离开北京
送出感谢: 1 次
接收感谢: 3 次

#6

帖子 ttand » 2007-11-05 21:21

c语言的

#include <stdio.h>
long a=10000,b,c=2800,d,e,f[2801],g;
int main(){
while(b-c)
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%04d",e+d/a),e=d%a)
for(b=c;d+=f*a,f=d%--g,d/=g--,--b;d*=b);
}

还有一个无法形容的bb
bt 的宏+bt的算法

代码: 全选

Here's another good one:

/*
 * Program to compute an approximation of pi
 * by Brian Westley, 1988
 * (requires pcc macro concatenation; try gcc -traditional-cpp)
 */

#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
            _-_-_-_
       _-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_
  _-_-_-_-_-_-_-_-_-_-_-_-_-_
    _-_-_-_-_-_-_-_-_-_-_-_
        _-_-_-_-_-_-_-_
            _-_-_-_
}
错过好多好贴,没占到广告位后悔啊
cozo
帖子: 20
注册时间: 2007-11-02 10:16
送出感谢: 0
接收感谢: 0

#7

帖子 cozo » 2007-11-06 11:51

不是有一个一行代码算pi的程序的吗?比这个还外星人。
回复

回到 “Python/Php/Perl”