我们身边到处都是黑洞。— 霍金

什么是6174数字黑洞?
无论怎样设值,在规定的处理法则下,最终都将得到固定的一个值,再也跳不出去了,就像宇宙中的黑洞可以将任何物质(包括运行速度最快的光)牢牢吸住,不使它们逃脱一样,而这些设定的自然数就构成了数学黑洞。
在人教版小学数学五年级上册中就介绍了“6174数字黑洞”,它是印度数学就卡普雷卡尔于1949年发现的,所以又称为“卡普雷卡尔黑洞”。6174数字黑洞的规则如下:
取任意一个不完全相同的4位数,将组成该数的4个数字由大到小排列组成一个大的数,又由小到大排列成一个小的数,再用大数减去小数得到一个差值,之后对差值重复前面的交换步骤,最终会掉入数字黑洞6174中。
例如,取整数7086,对其各位数重排后得到大数8760和小数678,8760 – 678 = 8082,对8082进行重排得到的大数和小数分别为8820和288,8820 – 288 = 8532,再次重排得到8532和2358,8532 – 2358 = 6174,继续重排得到7641和1467,7641 – 1467 = 6174,只要得到6174,无论再怎么计算,永远都是6174,掉进了6174这个数字黑洞中。
编程思路
根据前面的描述,我们可以发现,编写程序验证数字黑洞,可以分为如下几个模块:
- 拆分数字:就是将一个四位整数进行拆分,分别得到个位、十位、百位和千位;
- 排序模块:将拆分得到的4个数字进行排序;
- 获取大数:获取排序之后的最大数;
- 获取小数:获取排序之后的最小数;
- 6174数字黑洞模块:自制积木,对给定的4位数按照规则进行运算,直到最后得到6174;
- 入口程序:获取用户输入的数字,调用自制积木,验证6174数字黑洞规则。
程序实现
根据前面的分析,我们分步来编写程序。
1.拆分数字
建立自制积木,将其命名为“拆分数字”,并传入一个参数“整数”,编写代码如下:

2.排序
关于排序算法,可以使用冒泡、插入、选择、希尔和快速排序,可以采取其中的任意一种,这里采取选择排序,建立一个自制积木,命名为“选择排序”,编写代码如下:

3.获取大数
建立一个自制积木,命名为“获取大数”,编写代码如下:

4.获取小数
建立一个自制积木,命名为“获取小数”,编写代码如下:

5.编写6174数字黑洞自制积木
建立自制积木,命名为“6174数字黑洞”,编写代码如下:

6.入口程序
最后,我们来编写入口程序,接收玩家的输入,验证6174数字黑洞规则,代码如下:

运行效果
Scratch6174数字黑洞程序执行效果如图所示:

关于Scratch排序算法,可以参考:
暂无评论内容