20世纪30年代,德国汉堡大学的学生考拉兹研究过这个问题。1952年一位英国数学家独立发现了它,几年之后又被一位美国数学家所发现。在日本,这个问题最早是由角谷静夫介绍到日本的,所以日本人称它为“角谷猜想”。人们在运算过程中发现,算出来的数字忽大忽小,有的计算过程很长。比如从27算到1,需要112步。有人把演算过程形容为云中的小水滴,在高空气流的作用下,忽高忽低,遇冷结冰,体积越来越大,最后变成冰雹落了下来,而演算的数字最后也像冰雹一样掉了下来,变成了1。因此人们又给这个猜想起了个形象的名字——冰雹猜想。

这个问题的证明方法可以自行查阅资料,本文使用代码生成一些随机数来验证一下。

参考代码:



python冰雹猜想while程序 用python验证冰雹猜想_Python

执行结果:



python冰雹猜想while程序 用python验证冰雹猜想_Python_02


把上面代码稍微修改一下,绘制 水平柱状图 ,观察几个数字变为1时需要的计算次数:

python冰雹猜想while程序 用python验证冰雹猜想_Python_03

运行结果(横坐标表示正整数,纵坐标表示正整数变为1所需要的计算次数)



python冰雹猜想while程序 用python验证冰雹猜想_Python_04

把上面的代码再稍微修改一下,使用折线图可视化,观察几个数字变为1的过程:



python冰雹猜想while程序 用python验证冰雹猜想_数据分析_05

运行结果(横坐标表示第几次计算,纵坐标表示每次计算得到的中间结果,最后都变为1)



python冰雹猜想while程序 用python验证冰雹猜想_数据分析_06