第二十二讲 (冰雹猜想)

一月 23, 2019

问题描述

在20世纪70年代中期,出现了一种风靡于美国各所名牌大学校园的数学游戏,无论是学生还是教师、研究员和教授们都纷纷对它着了迷。这个游戏的规则非常简单:任意写出一个自然数n,如果是奇数,则把它变成3n+1;如果是偶数,则把它变成n/2。如此反复运算,最终必然得到1,确切地说是落入“4-2-1”的循环之中。

这个有趣的数学游戏逐渐引起了,全世界数学爱好者的兴趣,人们争先恐后地去研究它的规律,并试图证明它。人们发现运算过程中的数字起伏变化,忽大忽小,有时还很剧烈。这就像积雨云中的小雨点,会被猛烈上升的气流带上零度以下的高空,凝固成小冰珠。随着含水汽的上升气流增大,小冰珠逐渐变大,最终变成大冰雹从天而降,砸到地面上。因此人们形象地把这个数学游戏称为“冰雹猜想”。

世界各国研究“冰雹猜想”的人很多,并给它起了许多名字,如西拉古斯猜想、考拉兹猜想、角谷猜想、哈塞猜想、奇偶归一猜想、3x+1问题……

然而,这个有趣而诱人的数字冰雹,一点点地把研究者的热情冷却,很多人选择了退出;而仍然坚持研究或者后来加入的人,至今也无法证明这个猜想。

今天借助于计算机编程技术,我们可以很方便地验证“冰雹猜想”。接下来,让我们编写程序,感受数字掉入“冰雹猜想”这个数字黑洞后的神奇变化吧。
编程思路

数字黑洞“冰雹猜想”的规则如下:

对任意一个自然数n,如果它是奇数,则对它乘3再加1;如果它是偶数,则对它除以2。如此反复运算,最终都能够得到1。即
奇数:n=3×n+1
偶数:n=n÷2

根据“冰雹猜想”数字黑洞的规则,采用递归结构设计验证这个数字黑洞的程序。改程序由入口程序和“冰雹猜想”模块组成。
(1)入口程序:接收用户输入的一个自然数,并将其放入数字黑洞中。
(2)“冰雹猜想”模块:按照这个数字黑洞的规则进行变换运算,直到最后得到1为止。

程序清单

根据以上编程思路编写验证这个数字黑洞的程序,程序清单见下图


单机绿旗运行程序,输入一个自然数“27”,然后在“日志”列表查看整个“冰雹”的变化过程:
27,82,41,124,62,31,94,47,142,71,214,107,322,161,484,242,121,364,182,91,274,137,137,412,206,103,310,155,466,233,700,350,175,526,263,790,395,1186,593,1780,890,445,1336,668,334,167,502,251,754,377,1132,566,283,850,425,1276,638,319,958,479,1438,719,2158,1079,3238,1619,4858,2429,7288,3644,1822,911,2734,1367,4102,2051,6154,3077,9232,4616,2308,1154,577,1732,866,433,1300,650,325,976,488,244,122,61,184,92,46,23,70,35,106,53,160,80,40,20,10,5,8,4,2,1。

小知识

自然数27是英国剑桥大学教授John Conway找到的一个自然数,它貌似普通,但起伏变化异常剧烈,经过77次变换后达到峰值,之后经过34次变换跌落地面变为1.整个变换过程需要111步,其峰值为9232,约为原有数字27的342倍,然而最终也无法逃脱这个数字黑洞。
试一试

任意输入一些自然数,看看它们在这个“冰雹猜想”的数字黑洞中是否像27这样变化剧烈。

少儿编程小课:第五十五课(天文望远镜)少儿编程小课:第五十六课(油菜花田)