328329是一个有趣的数,首先,它是一个完全平方数,即,它是573的平方;其次,这个数的后三位与前三位之差为1,即329 – 328 = 1,我们把这样的数称为有序平方数。那么像328329这样的六位数是不是唯一的六位有序平方数呢?还有完全平方数,四位数或八位数是否也存在这样的有序平方数呢?
这是一道简单的算术问题,只涉及到乘法及减法运算。不过要想用程序来求解,还需要将问题进行转化,下面是我们的解题思路。
1、找到全部6位数的完全平方数,为此需要确定以下数值:
最小整数M:它的平方为6位数;
最大整数N,它的平方为6位数;
计算M至N之间每个整数的平方数S;
2、将S分解为两部分,前三位a与后三位b,并求b – a,如果b-a=1,则保存此结果。
3、显示全部符合条件的结果。
上述解题思路中,关键在于将S分解为a、b。这种问题对于人类来说几乎不能称为问题,但对于机器,则需要借助于除法运算,即,求商和求余数的运算。六位数S除以1000,所得的商(整数部分)就是前三位,而所得的余数就是后三位。
基于上述分析,我们来编写程序,求出全部的6位有序平方数,并尝试搜索符合条件的四位数及八位数。
在App Inventor中创建一个新项目——有序平方数,添加两个水平布局、两个标签及一个按钮,将标签1改名为“题目说明”,将标签2改名为“计算结果”,并选中其“启用HTML格式”选项,界面的布局如图1所示。其中两个水平布局的宽度为90%,水平及垂直对齐为居中,水平布局1的高度为55%,水平布局2的高度为充满。按钮及标签组件的字体为18。
图1 有序平方数项目的用户界面
下面来编写程序。
1、显示题目
声明一个变量——题目说明,设其初始值为描述问题的文本,并在屏幕初始化时,将内容显示在题目说明标签中。代码如图2所示。
图2 用标签显示题目内容
2、将求解的结果保存为列表
当按钮1被点击时,开始求解运算。首先求出平方数是6位数的整数的最大值和最小值,然后在最大值和最小值之间执行循环语句,针对其间的每个整数,逐一排查其平方数是否为有序平方数,并将有序平方数保存在列表中。代码如图3所示。
图3 将有序平方数保存在列表中
3、显示求解结果
创建一个过程——列表转字串,将上述有序平方数列表转化为便于显示的字串,代码如图4所示。
图4 定义过程,将列表转为字串
注:代码中的和为粗体标记,两个标记之间的文字会加粗显示,以便突出数字内容,后面的
为换行标记,这些标记仅当标签启用HTML格式时有效。
然后在按钮1的点击事件中调用上述过程,代码及测试结果如图5所示。
图5 显示求解结果
结果显示,共有四个六位数的有序平方数。在图5中的局部变量起始值的末尾添加两个9,在终止值的末尾添加两个0,可以搜索8位数的有序平方数,同样,在起始值末尾删除两个9,在终止值末尾删除两个0,可以搜索4位数的有序平方数,有兴趣的读者不妨自行修改程序完全平方数,看看结果如何。
注:本文已正式发表于《爱上机器人》杂志总第6期(2019.05)
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw