| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1497 人关注过本帖, 1 人收藏
标题:关于计算圆周率π的值 程序计算是没有啥问题,但是太慢了 ,谁有更快的代码 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(1)
已结贴  问题点数:20 回复次数:14 
关于计算圆周率π的值 程序计算是没有啥问题,但是太慢了 ,谁有更快的代码吗
程序代码:
#include<stdio.h>
#include<math.h>


int main(void)
{
    double pi;
    pi=0.0;
    int i=1,j=0;
    while(1)
    {
        pi=pi+pow(-1,j)*(double)(1.0/i);
        i=i+2;
        j++;
        if((double)(1.0/i)<0.0000000001) break;
    }
    printf("pi=%.10lf",pi*4);
    return 0;
}
搜索更多相关主题的帖子: 计算 圆周率 
2012-11-23 18:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
对了 公式是π/4=1/1-1/3+1/5-1/7..................
用其他公式的不在此列

DO IT YOURSELF !
2012-11-23 18:36
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这段程序所用时间是80秒左右
计算圆周率为小数点后10位


DO IT YOURSELF !
2012-11-23 18:55
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
用这个公式就不可能快到哪儿去

重剑无锋,大巧不工
2012-11-23 20:02
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
哦 我还以为我代码写的笨呢
那还有啥方法求π呢

DO IT YOURSELF !
2012-11-23 20:03
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
很多,随便在个搜索引擎里输入“圆周率公式”都能找到。

这是某届国际C语言混乱代码大赛的奖作品,也是我最喜欢的一件作品。

不要纠结头文件的事,直接编译执行看看。
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[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);}

重剑无锋,大巧不工
2012-11-23 20:20
woxingx
Rank: 2
等 级:论坛游民
帖 子:46
专家分:68
注 册:2012-11-8
收藏
得分:0 
嗯,和楼下的想法相同
2012-11-23 20:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include<stdio.h>
int a=10000,b,c=2800,d,e,f[2801],g;
void 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[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
确实很快,很快

至于原理吗 ,就不是我能想出来的 ,索性不想了

DO IT YOURSELF !
2012-11-23 20:46
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
好猛

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-11-23 20:53
ltianc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:56
专家分:128
注 册:2012-10-16
收藏
得分:0 
回复 6楼 beyondyf
不简单呀!

世界等我去改变。
2012-11-23 22:02
快速回复:关于计算圆周率π的值 程序计算是没有啥问题,但是太慢了 ,谁有更快 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017447 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved