首页
社区
课程
招聘
四行代码求出圆周率800位
2004-7-14 22:45 5440

四行代码求出圆周率800位

RoBa 活跃值
16
2004-7-14 22:45
5440
int a=10000,b,c=2800,d,e,f[2801],g;
main(){for(;b-c;)f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f*a,f=d%--g,d/=g--,--b;d*=b);}

号称是外星人写的程序,哪位能给弟讲解一下?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
打赏
分享
最新回复 (7)
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
StarFish 2004-7-15 18:03
2
0
被骗了
不信???自己试试
雪    币: 897
活跃值: (1264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
龙岱客 2004-7-17 10:09
3
0
#include <stdlib.h>
#include <stdio.h>
main()
{
        long a=10000,b,c=2800,d,e,f[2801],g;
        for(;b-c;)
        f[b++]=a/5;
        for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
         for(b=c;d+=f*a,f=d%--g,d/=g--,--b;d*=b);
   }

打印结果:

31415926535897932384626433832795028841971693993751058209749445923
07816406286208998628034825342117067982148086513282306647093844609
55058223172535940812848111745028410270193852110555964462294895493
03819644288109756659334461284756482337867831652712019091456485669
23460348610454326648213393607260249141273724587006606315588174881
52092096282925409171536436789259036001133053054882046652138414695
19415116094330572703657595919530921861173819326117931051185480744
62379962749567351885752724891227938183011949129833673362440656643
08602139494639522473719070217986094370277053921717629317675238467
48184676694051320005681271452635608277857713427577896091736371787
21468440901224953430146549585371050792279689258923542019956112129
02196086403441815981362977477130996051870721134999999837297804995
10597317328160963185
雪    币: 215
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Cryptography 2004-7-17 13:06
4
0
这是一个经典算法,我没有研究过,不过在水木清华BBS的IQDoor版面有这个算法分析的文章自己可以找找.
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
StarFish 2004-7-19 18:30
5
0
f=2000

第一个循环
d=0,g=5600

第二个循环
  关键为f和d
   f  <--f*10000/(--g)的余数
   d+=(f*10000/(g--)的商)*(b--)
  

输出的是4位数字,e为余数
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
StarFish 2004-7-19 19:44
6
0
数学分析知识
pi=2*∑n!/(2n+1)!!  n∈N

(好久没有摸过书了,希望没有出错)
献丑了
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zouyiqi 2004-7-31 21:12
7
0
为什么我不能通过编译?
要么没有反映,要么是错误的答案?
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Lindily 2004-8-12 16:24
8
0
有点搞不懂!对于一个变量当没有赋初值时,有可能会造成垃圾数据(内存里以前并不一定是空的)因此我认为当未赋初值时就认为变量是零是不正确的。这里仅仅是我个人的看法,不知大家由何高见?
游客
登录 | 注册 方可回帖
返回