返回顶部

收藏

C语言计算圆周率PI

更多
#include "stdio.h" 
#include "stdlib.h" 

#define SCALE 10000 
#define ARRINIT 2000 

void pi_digits(int digits) { 
    int carry = 0; 
    int arr[digits + 1]; 
    for (int i = 0; i <= digits; ++i) 
        arr[i] = ARRINIT; 
    for (int i = digits; i > 0; i-= 14) { 
        int sum = 0; 
        for (int j = i; j > 0; --j) { 
            sum = sum * j + SCALE * arr[j]; 
            arr[j] = sum % (j * 2 - 1); 
            sum /= j * 2 - 1; 
        } 
        printf("%04d", carry + sum / SCALE); 
        carry = sum % SCALE; 
    } 
} 

int main(int argc, char** argv) { 
    int n = argc == 2 ? atoi(argv[1]) : 100; 
    pi_digits(n); 

    return 0; 
}  

标签:c/c++

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. yuer 发表 2018-07-27 08:46:07 coredump之百米之内必有解药
  2. hev 发表 2018-04-28 06:11:38 一个简单、轻量的 Linux 协程实现
  3. hev 发表 2017-10-19 15:56:11 FSH – 助你接入私有网络中的 Linux 终端
  4. gonwan 发表 2015-04-15 08:03:07 Database Access Layer in C++
  5. gonwan 发表 2015-12-28 08:41:13 Basic Usage of Boost MultiIndex Containers
  6. gonwan 发表 2016-01-19 03:37:54 Coroutines in C++/Boost
  7. Haoxiang Li 发表 2017-10-25 20:29:02 MXNet C++ Deployment
  8. yuer 发表 2017-10-20 07:52:47 基于leveldb的持久消息队列SDK
  9. yuer 发表 2017-10-07 07:51:32 c++11完美转发
  10. 博主 发表 2016-09-03 00:00:00 C++编译期类型信息的利用
  11. yuer 发表 2017-09-06 03:03:29 libcurl访问unix socket
  12. yuer 发表 2017-09-07 08:14:58 valgrind检测php扩展的warning

发表评论