魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
楼主: aubell
打印 上一主题 下一主题

有人尝试过手动计算圆周率pi吗? [复制链接]

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

21#
发表于 2011-6-29 22:39:40 |显示全部楼层

这一层发自己写的程序

  1. use Math::BigInt;

  2. sub MY_PI{
  3. my $n=shift;
  4. my $first=Math::BigInt->new('2');
  5. my $result=Math::BigInt->new('0');
  6. my $up=1;
  7. my $down=3;
  8. my $npow= Math::BigInt->new('10'. '0' x $n);
  9. $first->bmul($npow);
  10. while($first->bcmp(0) > 0){
  11. $result ->badd($first);
  12. $first ->bmul($up++ );
  13. $first ->bdiv($down++);
  14. $down++;
  15. }
  16. return $result;
  17. }

  18. ##计算到314位,最后几位有出入
  19. print MY_PI(314);
复制代码
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

22#
发表于 2011-7-2 21:53:47 |显示全部楼层
计算的结果:

0,2,8,28,53,74,106,114,171,132,212,185,276,289,371,327,371,468

保存。

乘10,加上后面的数
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

23#
发表于 2011-7-7 22:49:57 |显示全部楼层
以上结果纯手动计算,验算完毕。下一个数499。不往下算了。
经验总结:
手动计算比较容易出错。要反复验算才行。
这个是我的验算程序。
再放个tinyC编译器也放这里了。

[ 本帖最后由 aubell 于 2011-7-8 07:13 编辑 ]

check.rar

702 Bytes, 下载次数: 7

tcc-0.9.25-win32-bin.zip

280.45 KB, 下载次数: 9

Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

24#
发表于 2011-7-14 22:48:12 |显示全部楼层

一个挑战

用BrainF**K语言写一个计算PI的程序
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

25#
发表于 2011-7-18 19:18:52 |显示全部楼层

看看牛人的牛程序吧

牛人用BrainFK写的计算PI的程序

  1. [ yet another pi calculation program in bf
  2.   Just like for pi16.b the accuracy of the result depends on the cellsize:

  3.    - using  8 bit cells causes an overflow after 4 digits
  4.    - using 16 bit cells causes an overflow after 537 digits
  5.    - using 32 bit cells causes an overflow after several millions of digits
  6.   
  7.   It's about ~38 times shorter than pi16.b, ~364 times faster and works with
  8.   not-wrapping (bignum) implementations.

  9.   by Felix Nawothnig (felix.nawothnig@t-online.de) ]
  10. >  +++++ +++++ +++++ (15 digits)
  11. [<+>>>>>>>>++++++++++<<<<<<<-]>+++++[<+++++++++>-]+>>>>>>+[<<+++[>>[-<]<[>]<-]>>
  12. [>+>]<[<]>]>[[->>>>+<<<<]>>>+++>-]<[<<<<]<<<<<<<<+[->>>>>>>>>>>>[<+[->>>>+<<<<]>
  13. >>>>]<<<<[>>>>>[<<<<+>>>>-]<<<<<-[<<++++++++++>>-]>>>[<<[<+<<+>>>-]<[>+<-]<++<<+
  14. >>>>>>-]<<[-]<<-<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]>[-]>+<<<-[>>+<<-]<]<<<<+>>>>>>>
  15. >[-]>[<<<+>>>-]<<++++++++++<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]>[-]>+>[<<+<+>>>-]<<<
  16. <+<+>>[-[-[-[-[-[-[-[-[-<->[-<+<->>]]]]]]]]]]<[+++++[<<<++++++++<++++++++>>>>-]<
  17. <<<+<->>>>[>+<<<+++++++++<->>>-]<<<<<[>>+<<-]+<[->-<]>[>>.<<<<[+.[-]]>>-]>[>>.<<
  18. -]>[-]>[-]>>>[>>[<<<<<<<<+>>>>>>>>-]<<-]]>>[-]<<<[-]<<<<<<<<]++++++++++.
复制代码
写程序写到这个境界,应该是极高的了!!
感觉这个程序比网络上常见的短小的c语言计算程序还要牛。
有空了分析一下算法。
放个BrainFK的解释器在这里。


BrainFK的语言简短介绍:

先假设你有三样东西:铅笔,橡皮,长长的纸带。

每次往格子里写数的时候,都先擦掉该格中原来的数。

纸带上有很多格子,格子里面都写着“0”。

开始的时候,你用铅笔笔尖点着任意一个格子。

然后,按照以下过程执行程序:

看到 > 就把笔尖往右边移动一格;

看到 < 就把笔尖往左边移动一格;

看到 + 就把笔尖指点的数加 1 ,改写好;

看到 - 就把笔尖指点的数减 1 ,改写好;

看到 , 就让别人报一个数,写在笔尖指点的格子里;

看到 . 就把笔尖指点的数字告诉给人家;

看到 [ ]  扩起来的部分:要这样做
只要笔尖指点的不是0,就做一遍括号里的动作;
再看,笔尖指点的如果不是0,就再做一遍...
直到某一遍结束,笔尖恰好指着一个0

整个语言只有八个符号,是不是比魔方还简单?

上面的程序是高手写的,可以计算PI的。

[ 本帖最后由 aubell 于 2011-7-18 21:40 编辑 ]

yapi.rar

2.69 KB, 下载次数: 7

Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

Rank: 4

积分
1928
帖子
1060
精华
6
UID
17579
性别
保密

魔方理论探索者 论坛建设奖 六年元老

26#
发表于 2011-7-18 21:09:21 |显示全部楼层
稍微有点不同的是:
告诉数字给人家的时候:
用48代表0,用49代表1,50代表2,类推;
用65代表大写的A,66代表大写的B,类推;
用97代表小写的a,98代表小写的B,类推。

[ 本帖最后由 aubell 于 2011-7-18 21:42 编辑 ]
Enjoy cubing
Enjoy coding.
我喜欢的公式 U D F2 B2 U' D'

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-5-3 22:34

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部