Python验证和可视化冰雹猜想、角谷猜想、考拉兹猜想

问题描述:

冰雹猜想、角谷猜想、考拉兹猜想说的是同一个问题:给定任意正整数,如果是偶数就除以2,如果是奇数就乘以3再加1,最终总能得到1。

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

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

参考代码:

执行结果:

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

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

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

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

下一篇
举报

扫码关注云+社区

领取腾讯云代金券