【C語言教學手冊(四版)-練習題解答】

 第8章

C語言教學手冊(四版)-博客來網址

      8.3 撰寫第一個 C 程式語言

 

 

17. 數學大師歐勒(Euler,1707-1783),找到了一個計算圓周率的無窮乘積:

π      3      5       7     11    13    17    19     23 
一 = 一 × 一  × 一 × 一 × 一 × 一 × 一 ×  一×....
2      2      6       6     10    14    18    18     22  
有趣的是,這個公式裡,所有的分子都是大於 2 的質數,分母則是不能被 4 整除,且最 靠近分子的偶數。 試撰寫一函數 double Euler(int n),用來估算圓周率的值到第 n 項,並計算 Euler(10)、 Euler(100)、Euler(1000) 與 Euler(10000) 的結果(提示,利用習題 16 的 find_k() 函 數來求解分母)。
 

#include <stdio.h>

int find_k(int);

int is_prime(int);

double Euler(int);

int main()

{

    printf("Euler(10)=%f\n",Euler(10));

    printf("Euler(100)=%f\n",Euler(100));

    printf("Euler(1000)=%f\n",Euler(1000));

    printf("Euler(10000)=%f\n",Euler(10000));

    system("pause");

    return 0;

}

double Euler(int n)

{

  int cnt=0,p=3;

  double total=1.0;

  while(cnt<n)

  {

        if(is_prime(p))

         {

            total=total*i/(4*find_k(i)+2);

            cnt++;

         }

         return 2.0*total;  

   }

   return eul*2;

}

int find_k(int n)

{

   int np;

   np=(n-2)/4;

   if(n-(4*np+2)<4*(np+1)+2-n)

     return (4*np+2);

   else

     return (4*(np+1)+2);

}

int is_prime(int num)

{  

   int i;

   for(i=2;i<= i<=num-1;i++)

       if(num%i==0)

        return 0;

   return 1;

}

 

 

 


 

(不好意思小宣傳一下我的繪圖 希望大家喜歡)

 

\\

這是我的海苔貓粉專

www.facebook.com/norinekocat/

 

海苔貓IG

海苔貓Instagram

 

謝謝大家:))

裡面有許多繪圖作品~ 希望大家支持我會繼續努力

請多多指教哦

 

 

ps

p新的貼圖終於出來了💜💜💜可愛的海苔貓-第三代

 

海苔貓繪圖作品\\

希望大家支持~~

arrow
arrow
    文章標籤
    圓周率 C語言 解答
    全站熱搜

    海苔貓Nori 發表在 痞客邦 留言(0) 人氣()