C趣味程序百例(14)将真分数分解为埃及分数

文章作者 100test 发表时间 2007:03:10 17:32:04
来源 100Test.Com百考试题网


45.将真分数分解为埃及分数
分子为1 的分数称为埃及分数,现输入一个真分数,请将该分数分解为埃及分数。
如:8/11=1/2 1/5 1/55 1/110。
*问题分析与算法设计
若真分数的分子a能整除分母b,则真分数经过化简就可以得到埃及分数,若真分数的分子不能整除分母,则可以从原来的分数中分解出一个分母为b/a 1的埃及分数。用这种方法将剩余部分反复分解,最后可得到结果。
*程序与程序注释
#include
void main()
{
long int a,b,c.
printf("Please enter a optional fraction(a/b):").
scanf("%ld/%ld",&.a,&.b). /*输入分子a和分母b*/
printf("It can be decomposed to:").
while(1)
{
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.}
}
}
*运行结果
1. Please enter a optional fraction (a/b): 1/6
It can be decomposed to: 1/6
2. Please enter a optional fraction (a/b): 20/33
It can be decomposed to: 1/2 1/10 1/165
3. Please enter a optional fraction (a/b): 10/89
It can be decomposed to: 1/9 1/801
4. Please enter a optional fraction (a/b): 19/99
It can be decomposed to: 1/6 1/40 1/3960
5. Please enter a optional fraction (a/b): 8/89
It can be decomposed to: 1/11 1/957

相关文章


C趣味程序百例(14)计算分数的精确值
国家计算机等级考试-合格证书
C趣味程序百例(14)将真分数分解为埃及分数
报考指南江西省考点介绍
2006年4月全国计算机等级考试二级笔试试卷Access数据库程序设计参考答案及评析
C趣味编程百例(13)分数之和
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛