幫忙翻譯C語言程式

每行都要翻譯喔

#include <stdio.h>

#include <stdlib.h>

int find_k(int);

int is_prime(int);

double Euler(int);

int main(void)

{

int i;

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

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

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

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

system("pause");

return 0;

}

int is_prime(int num) /* is_prime()函數,可測試num 是否為質數 */

{

int i;

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

if(num%i==0)

return 0;

return 1;

}

double Euler(int n)

{

int i=3,cnt=0;

double total=1.0;

while(cnt<n)

{

if(is_prime(i))

{

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

cnt++;

}

i++;

}

return 2.0*total;

}

int find_k(int n)

{

int np;

np=(n-2)/4;

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

return np;

else

return np+1;

}

1 個解答

評分
  • 1 0 年前
    最佳解答

    我發現程式碼就有很多令人不解的地方,你有試著編譯過嗎

    2010-12-25 11:43:33 補充:

    #include /*說明會用到的函式庫*/

    #include int find_k(int); /*宣告三個副程式*/

    int is_prime(int);

    double Euler(int); int main(void) /*主程式*/

    {

    int i; /*宣告一個整數(從頭到尾都沒用到)*/

    printf("Euler(%d)=%8.5f\n",10,Euler(10)); /*%d=10,%8.5f=呼叫副程式並丟入10*/

    printf("Euler(%d)=%8.5f\n",100,Euler(100)); /*同上解,%f是浮點數,8.5應該是要求顯示的位數吧*/

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

    printf("Euler(%d)=%8.5f\n",10000,Euler(10000)); system("pause"); /*系統暫停*/

    return 0; /*傳回0*/

    } int is_prime(int num) /*is_prime( )副程式*/

    {

    int i; /*宣告一個整數,此副程式使用,不會與主程式之i重複*/

    for(i=2;i<=num-1;i++) /*讓i初始值為2,i<=num-1時執行迴圈,之後讓i=i+1*/

    if(num%i==0) /*讓num/i是否整除*/

    return 0; /*成立就傳回0*/

    return 1; /*反之則1*/

    } double Euler(int n)/*Euler( )副程式*/

    {

    int i=3,cnt=0; /*宣告2個整數,並給予初值*/

    double total=1.0; /*宣告雙倍精度浮點數=1.0*/

    while(cnt/*cut*/

    {

    if(is_prime(i)) /*呼叫is_prime()丟入i,為1時執行迴圈*/

    {

    total=total*i/(4*find_k(i)+2); /*執行此運算,呼叫find_k(i)*/

    cnt++; /*cnt=cnt+1*/

    }

    i++; /*i=i+1*/

    }

    return 2.0*total; /*傳回2倍total*/

    } int find_k(int n)/*find_k( )副程式*/

    {

    int np; /*宣告整數np*/

    np=(n-2)/4; /*不用說了吧*/

    if(n-(4*np+2)<4*(np+1)+2-n) /*判斷此條件是否成立*/

    return np; /*成立傳回np*/

    else

    return np+1; /*反之傳回np+1*/

    紅色是我覺得奇怪之處

    希望有幫助

    2010-12-26 13:52:10 補充:

    main裡的變數宣告,多餘的

    還有is_prime裡的迴圈,讓我不是很懂

還有問題?馬上發問,尋求解答。