- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第21课 计算水仙花数 1.寻找水仙花数。水仙花数是指这样的三位整数,其各个位上的数之立方和恰好等于该数自己,例如371,是水仙花数,因为371=33+73+13,设计一个算法寻找出所有的水仙花数。 2.寻找玫瑰花数。玫瑰花数是指这样的四位整数,其各个位上的数之4次方和恰好等于该数自己,例如1634,1634=14+64+34+44,设计一个算法寻找出所有的玫瑰花数。 3.寻找勾股数。“勾股数”指满足勾股定理关系的一组整数,也就是直角三角形三边长恰好都取整数值的特殊情况,3,4,5就是一组勾股数大家都知道32+42=52, 输出50以内能够组成勾股数。 4.“百钱买百鸡”问题。中国古代数学家张丘建在《张丘建算经》中提出一个问题。“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡。问鸡翁、母、雏各几何?”。 枚举算法 枚举算法的基本思想是把问题所有的可能解一一地罗列出来,并对每一个可能解进行判断,以确定这个可能解是否是问题的真正解。 在设计枚举算法时,必须注意的是: (1)不能遗漏任何一个真正解,这是问题本身所要求的; (2)尽可能地使可能解的罗列范围最小,这是为了提高解决问题的效率。 实践活动 寻找水仙花数。水仙花数是指这样的三位整数,其各个位上的数之立方和恰好等于该数自己,例如371,是水仙花数,因为371=33+73+13,设计一个算法寻找出所有的水仙花数。 (1).算法分析(点击打开算法分析):水仙花数是三位整数,从100到999共900种可能,罗列出问题所有可能的解并判断 每个位上数字的3次方之和是否恰好等于它自己,使用运算符MOD和\对每个整数进行分解,分别得到百位上的数字、十位上的数字和个位上的数字。 算法分析 (2).分析并编写程序代码:①程序界面设计: 控件属性值的设置 参考如下表 ②分析算法流程,编写代码;Private Sub Command1_Click()Dim sum As IntegerDim i, a, b, c As IntegerList1.ClearFor i = 100 To 999a = i \ 100 ‘求得百位上的数字ab = i \ 10 Mod 10 求得十位上的数字b c = i Mod 10 求得个位上的数字cIf a ^ 3 + b ^ 3 + c ^ 3 = i Then 判断是否满足条件List1.AddItem (Str(i))sum = sum + 1End IfNext iLabel1.Caption = 个数: + Str(sum)End Sub ③运行调试程序; 课堂练习 1.寻找水仙花数问题,请将划线处填写完整:Private Sub Command1_Click()Dim sum As IntegerDim a As Integer, b As Integer, k As IntegerList1.ClearFor a = 1 To 9For b= 0 To 9For k = 0 To 9If __________________________________ Then ‘(1) List1.AddItem (Str(100 * a+ 10 * b+ k))sum = sum + 1End IfNext kNext b_____________________ ’(2)Label1.Caption = 个数: + Str(sum)End Sub 2. 把一个两位数的个位数字与其十位数字交换后得到一个新数,它与原数相加,结果恰好是一个自然数的平方,这样的两位数有多少?请将下面代码中的划线处填写完整:Private Sub Command1_Click()Dim s1 As Integer,s2 as IntegerDim a As Integer, b As IntegerList1.ClearFor a = 1 To 9For b = a To 9 假设b≥a,避免重复s1=10*a+b____________________________ ‘(1) If __________________________ Then List1.AddItem (str(s1)) ‘(1)寻找满足条件的方案Next bNext aEnd Sub 算 法 的 效 率(一) 评价一个算法的效
文档评论(0)