Python中的Collatz序列2025年3月3日 | 阅读7分钟 考拉兹猜想简介考拉兹猜想,也称为“3n + 1”猜想或冰雹序列,是一个多年来困扰数学家的数学问题。它以德国数学家洛塔尔·考拉兹(Lothar Collatz)的名字命名,他于1937年首次提出该猜想。该猜想提出了一个看似简单却出奇复杂的问题:对于任何一个正整数,如果它是偶数,则将其除以2;如果它是奇数,则将其乘以3再加1。一直这样进行下去,如果你从任何一个正整数开始,最终都会得到1。 尽管它具有欺骗性的简单性,但考拉兹问题已知仍未解决。数学家们已经进行了非常彻底的科学研究,探索了其许多性质并试图揭示其真实的数学行为。这个长期存在的问题尚未得到解决,即使在今天,数学家们仍在努力尝试找到答案。在本文中,我们将重点关注考拉兹序列,研究它的一些令人费解的方面,并用Python来实现它。 理解考拉兹序列为了更好地理解考拉兹序列,让我们通过几个例子来说明。 示例 1让我们从数字12开始 步骤1:因为12是偶数,所以我们将其除以2 => 12 ÷ 2 = 6 步骤2:6是偶数,所以我们将其除以2 => 6 ÷ 2 = 3 步骤3:3是奇数,所以我们将其乘以3并加1 => 3 × 3 + 1 = 10 步骤4:10是偶数,所以我们将其除以2 => 10 ÷ 2 = 5 步骤5:5是奇数,所以我们将其乘以3并加1 => 5 × 3 + 1 = 16 步骤6:16是偶数,所以我们将其除以2 => 16 ÷ 2 = 8 步骤7:8是偶数,所以我们将其除以2 => 8 ÷ 2 = 4 步骤8:4是偶数,所以我们将其除以2 => 4 ÷ 2 = 2 步骤9:2是偶数,所以我们将其除以2 => 2 ÷ 2 = 1 因此,从12开始的序列在9步后终止于1。 示例 2 让我们从数字15开始 步骤1:15是奇数,所以我们将其乘以3并加1 => 15 × 3 + 1 = 46 步骤2:46是偶数,所以我们将其除以2 => 46 ÷ 2 = 23 步骤3:23是奇数,所以我们将其乘以3并加1 => 23 × 3 + 1 = 70 步骤4:70是偶数,所以我们将其除以2 => 70 ÷ 2 = 35 步骤5:35是奇数,所以我们将其乘以3并加1 => 35 × 3 + 1 = 106 步骤6:106是偶数,所以我们将其除以2 => 106 ÷ 2 = 53 步骤7:53是奇数,所以我们将其乘以3并加1 => 53 × 3 + 1 = 160 步骤8:160是偶数,所以我们将其除以2 => 160 ÷ 2 = 80 步骤9:80是偶数,所以我们将其除以2 => 80 ÷ 2 = 40 步骤10:40是偶数,所以我们将其除以2 => 40 ÷ 2 = 20 步骤11:20是偶数,所以我们将其除以2 => 20 ÷ 2 = 10 步骤12:10是偶数,所以我们将其除以2 => 10 ÷ 2 = 5 步骤13:5是奇数,所以我们将其乘以3并加1 => 5 × 3 + 1 = 16 步骤14:16是偶数,所以我们将其除以2 => 16 ÷ 2 = 8 步骤15:8是偶数,所以我们将其除以2 => 8 ÷ 2 = 4 步骤16:4是偶数,所以我们将其除以2 => 4 ÷ 2 = 2 步骤17:2是偶数,所以我们将其除以2 => 2 ÷ 2 = 1 因此,从15开始的序列在17步后终止于1。 然而,这里有一些例子表明了考拉兹序列的“机会性”性质。某些序列可能在几步后就停止,而另一些序列实际上并不总是立即停止。考拉兹猜想的迷人之处在于,所有正整数都将“原子化”,即在尝试操作的过程中最终会得到1。 在Python中实现考拉兹序列在Python中实现考拉兹序列是探索其性质的重要工具。因此,我们将用Python实现考拉兹序列。在下一步中,我们将根据一个正整数参数定义我们的函数。该函数将输出一个数字序列,直到达到1。 代码 输出 Enter a positive integer: 11 Collatz sequence starting with 11 : [11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1] Length of the sequence: 15 说明 该代码定义了一个名为'collatz_sequence'的函数,该函数从给定的正整数n开始生成考拉兹序列。然后,该函数通过用户输入序列的起始值来检查。它计算序列并打印序列及其长度。代码的工作原理如下:
这样,它向用户展示了考拉兹算法,并允许用户输入任何他喜欢的正数。 分析考拉兹序列考拉兹猜想由于许多由计算分析和数学审查支持的测试,尚未被接受为事实。不同的数学家试图深入了解考拉兹序列的统计数据和行为。 因此,考拉兹序列的一个重要特征是它具有广泛不同的行为。理想情况下,一些数字会变成1,或者数字会遵循一个混沌的路径,突然增长到某个指数,而另一些则会收敛到1。这种行为的原因相当模糊,这引起了对该猜想的怀疑。 可视化考拉兹序列同样,通过操作考拉兹序列的可视化可以获得对其行为的许多见解。让我们绘制一个有限数量的序列的图,以清晰地显示它们的演变过程。 代码 输出 ![]() ![]() ![]() 说明 下面插入了 matplotlib 库的调用,这些调用逐个步骤跟踪数字6、11和27的考拉兹轨迹。其工作原理如下:
这个编程片段通过调用具有不同起始数字(6、11 和 27)的 `plot_collatz_sequence' 来实现这一点。这将生成一系列图表,显示这些序列如何转化为另一个序列。这种可视化让我们对序列以及它们何时开始出现差异有了直观的认识。 结论世界闻名的考拉兹序列问题长期以来一直是不同数字爱好者的挑战。由于其简单的描述,结果的行为仍然不稳定。它是至今仍未解决的最令人费解的数学问题之一。 在本文中,我们了解了如何使用 Python 获取和重现考拉兹序列,并对序列进行了简要分析。尽管在了解它们的来源方面取得了很大进展,但所有正整数最终都将得到1的最终问题仍然未解决。寻找证明该猜想的研究继续成为数学领域的重要驱动力,好奇心在其中起着主导作用。 下一主题Python 命令行自动化 |
机器学习原理知识是支撑机器学习算法开发的数学和统计基础,这些算法使机器能够从数据中学习。它涉及对模型如何从有限的数据集中进行泛化以在新情况或未见过的情况下做出预测或决策的理解。核心概念包括...
阅读 3 分钟
简介:在本教程中,我们将学习 Python 中的网络编程。Python 在网络编程中起着重要作用。Python 的标准操作系统库支持网络概念,例如网络、数据编码和解码,并且使用 Python 编写网络服务比使用 C++ 更容易……
阅读 6 分钟
什么是加密?加密是将数据转换为密文或加密文本的过程。简单来说,加密是编码数据的过程。加密密钥是完成加密过程所必需的。什么是解密?解密是将加密或...
阅读 4 分钟
简介 网络爬虫已经发展到了另一个层次,需要从动态网站中提取数据。虽然传统网站通常是用 HTML 构建的,只显示固定内容,但动态网站可以在客户端脚本语言的帮助下动态构建其内容……
阅读9分钟
我们已经尝试并学习了在程序中定义和调用函数的不同方法。在本文中,我们将讨论 Python 中的可变长度参数是什么。这里我们将介绍两种类型 - 非关键字参数 (*args) 关键字参数 (**kwargs) 非关键字参数 (*args) 首先...
阅读 4 分钟
? Python 和 C 是两种知名的编程语言,具有独特的属性和优势。Python 以其简洁、可读性和高级抽象而闻名,使其成为快速开发和原型设计的绝佳选择。另一方面,C 以其速度而著称...
阅读 6 分钟
简介 Wand 是一个由 ImageMagick 软件套件包装的 Python 库。对于在各种应用程序中处理图像的开发人员来说,ImageMagick 是一套强大的图像修改工具。Wand 提供了一个易于使用的 Python 接口来与 ImageMagick 交互,使用户能够完成复杂的...
阅读 3 分钟
简介 因此,Python 的简单性及其灵活性使其成为各种计算机语言中最适合入门的语言。另一个可以帮助您提高 Python 感知的课堂项目是“猜数字”游戏。本文将探讨……
阅读 4 分钟
引言 在编程中,优雅地处理错误是编写健壮且可维护代码的关键方面。Python 和许多其他编程语言一样,提供了一种强大的错误处理机制,称为异常。异常允许您以结构化且...
阅读 6 分钟
拉格朗日插值简介 为了得到一个通过特定点集的插值多项式,可以使用一种称为拉格朗日插值的数值技术。该多项式称为拉格朗日多项式,旨在确保每个点都能在插值中发挥独特作用,其表达式为...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India