面向对象程度设计基础(第2版)-李师贤-《面向对象程序设计基础》习题解.docVIP

  • 1695
  • 0
  • 约21.52万字
  • 约 157页
  • 2017-10-16 发布于浙江
  • 举报

面向对象程度设计基础(第2版)-李师贤-《面向对象程序设计基础》习题解.doc

1 习题与习题解答 1-1 完全数是指该数的所有因子之和等于它自身的数。例如6是完全数(1 + 2 + 3),28也是完全数(1 + 2 + 4 + 7 + 14)。28之后的下一个完全数相当大,手工计算比较难求。试给出一个算法,判断一个整数是否为完全数。 【分析】由题目知,判断数m是否完全数,要求出该数的所有因子。一个简单的思路是从2开始试,看每个数a是否能整除m,如果能整除,则a是m的因子。显然m的最大因子不会超过m,因此最多测试到数m。上面已使用SFPL语言给出了判断数a是否能整除m的例子,因此下面假设判断数a是否能整除m是基本操作。可给出算法如下: 【解答】判断数m是否完全数。 步骤1∶令sum = 1,a = 2。 步骤2∶如果a能整除m,则令sum等于sum加a,否则转步骤3。 步骤3∶令a等于a加1,如果a等于m转步骤4,否则转步骤2。 步骤4∶如果sum等于m,输出m是完全数,否则输出m不是完全数。 【讨论】可验证上述解答满足算法所必需的性质,首先该算法可终止,因为步骤3将a从2一直加1,最多m-1次可等于m,因此最后会转向步骤4而终止。至于解答中的步骤是否基本,则依赖已有的知识,或者说依赖于在用程序设计语言实现该算法时,程序设计语言所提供的语言机制。假设a能整除m是基本操作,上面解答还用到的操作是相加及判断两数是否相等,这些操作十分基本,所有程序

文档评论(0)

1亿VIP精品文档

相关文档