《计算机常用算法与程序设计案例教程?/p>
习题解答提要
习题
1
1-1
分数分解算法描述
把真分数
a/b
分解为若干个分母为整数分子为?/p>
1
”的埃及分数之和?/p>
?/p>
1
?/p>
寻找并输出小?/p>
a/b
的最大埃及分?/p>
1/c
?/p>
?/p>
2
?/p>
?/p>
c>900000000
,则退出;
?/p>
3
?/p>
?/p>
c
?/p>
900000000
,把?/p>
a/b-1/c
整理为分?/p>
a/b
,若
a/b
为埃及分数,则输
出后结束?/p>
?/p>
4
?/p>
?/p>
a/b
不为埃及分数,则继续?/p>
1
?/p>
?/p>
?/p>
2
?/p>
?/p>
?/p>
3
?/p>
?/p>
试描述以上算法?/p>
解:?/p>
)
(
int
a
b
d
?/p>
(
这里
int(x)
表示取正?/p>
x
的整?/p>
)
,注意到
1
?/p>
?/p>
?/p>
d
a
b
d
,有
)
1
(
)
1
(
1
1
?/p>
?/p>
?/p>
?/p>
?/p>
?/p>
d
b
b
d
a
d
b
a
算法描述:令
c=d+1
,则
input (a,b)
while(1)
{c=int(b/a)+1;
if(c>900000000) return;
else
{ print(1/c+);
a=a*c-b;
b=b*c; // a,b
迭代,为选择下一个分母作准备
if(a==1)
{ print(1/b);return;}
}
}
1-2
求出以下程序段所代表算法的时间复杂度
?/p>
1
?/p>
m=0;
for(k=1;k<=n;k++)