我的位置: 首頁 > 學習專區 > .NET技術 > C語言實例 將真分數分解為埃及分數

C語言實例 將真分數分解為埃及分數

2013-06-22 08:59:52
來源:
[導讀] 分子為1 的分數稱為埃及分數,現輸入一個真分數,請將該分數分解為埃及分數。如:8 11=1 2+1 5+1 55+1 110。*問題分析與算法設計若真分數

分子為1 的分數稱為埃及分數,現輸入一個真分數,請將該分數分解為埃及分數。

如:8/11=1/2+1/5+1/55+1/110。

*問題分析與算法設計

若真分數的分子a能整除分母b,則真分數經過化簡就可以得到埃及分數,若真分數的分子不能整除分母,則可以從原來的分數中分解出一個分母為b/a+1的埃及分數。用這種方法將剩余部分反復分解,最后可得到結果。

*程序說明與注釋

/*注:對源程序作稍許修改,主要是添加了一個外循環,可以直接計算多個真分數的埃及分數,按Ctrl-C退出。具體的算法我沒有認真看,有問題請提出,謝謝*/

#include

int main(void)

{

long int a,b,c;

while(true)

{

printf("Please enter a optional fraction(a/b):");

scanf("%ld/%ld",&a,&b); /*輸入分子a和分母b*/

printf("It can be decomposed to:");

while(true)

{

if(b%a) /*若分子不能整除分母*/

c=b/a+1; /*則分解出一個分母為b/a+1的埃及分數*/

else{ c=b/a; a=1;} /*否則,輸出化簡后的真分數(埃及分數)*/

if(a==1)

{

printf("1/%ld\n",c);

break; /*a為1標志結束*/

}

else

printf("1/%ld + ",c);

a=a*c-b; /*求出余數的分子*/

b=b*c; /*求出余數的分母*/

if(a==3) /*若余數為3,輸出最后兩個埃及分數*/

{ printf("1/%ld + 1/%ld\n",b/2,b); break;}

}

}

return 0;

}

*運行結果

Please enter a optional fraction (a/b): 1/6

It can be decomposed to: 1/6

Please enter a optional fraction (a/b): 20/33

It can be decomposed to: 1/2+1/10+1/165

Please enter a optional fraction (a/b): 10/89

It can be decomposed to: 1/9+1/801

Please enter a optional fraction (a/b): 19/99

It can be decomposed to: 1/6+1/40+1/3960

Please enter a optional fraction (a/b): 8/87

It can be decomposed to: 1/11+1/957

……(按ctrl-c退出)

評論
熱點專題
>>
相關文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
精品国产一区二区三区久久 | 一本大道AV伊人久久综合 | 中国浓毛少妇毛茸茸 | 一区二区三区四区国产 | 亚洲精品第一国产综合精品99 | 日韩中文无线码在线视频观看 |