登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 965|回复: 0

[C,C++教程] 【c语言】求π的近似值

[复制链接]

444

主题

509

帖子

2051

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2051

荣誉管理论坛元老

发表于 2021-6-30 23:06:29 来自手机 | 显示全部楼层 |阅读模式 来自:
  1. #include<stdio.h>- l" B  ]- \1 Q
  2. #include<iostream>  p2 i+ e& a# @6 w% ?% g$ J+ o
  3. using namespace std;; ~' m: @  k, o4 S- ?. d
  4. int main(void)" q+ @( B0 w! [; H, C4 b& A
  5. {       //本程序每四位数输出结果,如果请求计算的位数不是4的整数倍,最后输出可能会少1~3位4 Q( C. I; M( C4 o, K; n  Z8 {
  6.         long a[2]={956,80},b[2]={57121,25},i=0,j,k,p,q,r,s=2,t,u,v,N,M=10000;
    . }2 x0 s9 k  y3 ]" [+ a4 ~) [
  7.         printf("%9cMachin%6cpi=16arctan(1/5)-4arctan(1/239)\nPlease input a number.\n",32,32);
    2 F3 T$ K' E4 y, J* R2 {8 G  Z
  8.         cin>>N,N=N/4+3;# Y# U: U& q8 ]
  9.         long *pi=new long[N],*e=new long[N];
    ; y4 w# A3 a0 f; ^" W
  10.         while(i<N)pi[i++]=0;
    - l2 \  O; s) y  J0 V& y& J
  11.         while(--s+1)
    ) d6 q* G4 B1 A7 n, o
  12.         {
    9 F, C" o% f1 c4 b' [- ~
  13.                 for(*e=a[k=s],i=N;--i;)e[i]=0;3 _2 L  d+ r# R6 V
  14.                 for(q=1;j=i-1,i<N;e[i]?0:++i,q+=2,k=!k)
    $ d' t7 n6 P6 B! K7 r" F
  15.                         for(r=v=0;++j<N;pi[j]+=k?u:-u)u=(t=v*M+(e[j]=(p=r*M+e[j])/b[s]))/q,r=p%b[s],v=t%q;
    " A% }" f9 u6 o
  16.         }
    . w6 O# s" [" N/ s+ I  U
  17.         while(--i)(pi[i]=(t=pi[i]+s)%M)<0?pi[i]+=M,s=t/M-1:s=t/M;1 H/ f6 H6 I( J9 n
  18.         for(cout<<"3.";++i<N-2;)printf("%04ld",pi[i]);
    - z; i+ d8 Z5 f# @% O. W  L
  19.         delete []pi,delete []e,cin.ignore(),cin.ignore();  {4 U) A/ Q0 o, ?/ q0 P! u
  20.         return 0;
    ) N5 D8 K0 L7 |0 ]6 w. Q; O. d
  21. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|星空社区 |网站地图

GMT+8, 2024-4-28 06:29 , Processed in 0.186206 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表