这是少儿编程趣味数学系列教程的第三篇,解释了冰雹猜想(考拉兹猜想)的相关知识,以及用Python/Scratch实现了计算冰雹猜想的方法。
考拉兹(Collatz) 猜想,也称为 3n + 1 猜想,或者叫冰雹猜想,是一个已经存在 70 多年的数学问题。 它于 1937 年由德国数学家 Lothar Collatz 首次提出,但尽管付出了很多努力,它仍未得到解决,被认为是数学中最著名的未解决问题之一。
猜想很简单:给定任意正整数n,若n为偶数,则除以2; 如果 n 是奇数,则将其乘以 3 并加 1。不断重复该过程,并声称最终每个数字都会达到 1。无论这个过程中的数值如何庞大,就像冰雹一样迅速坠落,这也是“冰雹猜想”这个名字的由来。而其他的数字即使不是如此,在经过若干次的变换之后也必然会到4-2-1
的循环。
下面是一个例子:
n = 7
7 * 3 + 1 = 22
22 / 2 = 11
11 * 3 + 1 = 34
34 / 2 = 17
17 * 3 + 1 = 52
52 / 2 = 26
26 / 2 = 13
13 * 3 + 1 = 40
40 / 2 = 20
20 / 2 = 10
10 / 2 = 5
5 * 3 + 1 = 16
16 / 2 = 8
8 / 2 = 4
4 / 2 = 2
2 / 2 = 1
关于 Collatz 猜想的一个有趣事实是它很容易理解和解释,但要证明或反驳却极其困难。 事实上,许多数学家都试图解决它,但到目前为止,还没有人成功。 这个猜想也被计算机科学家广泛研究,他们用计算机计算了许多不同数字的行为,没有发现反例,但这并不能证明这个猜想是正确的。
另一个有趣的事实是,考拉兹猜想与许多其他数学领域相关,例如数论、代数和动态系统。 这使它成为青少年学习和探索的一个很好的话题,因为它涉及数学的许多不同分支。
虽然我们现在可能还无法证实或证伪这个猜想,但我们可以使用 Python或者Scratch,编写代码来执行转换,跟踪每个数字达到 1 所需的步数,并研究模式和行为。 这是学习数学和计算机科学的一种有趣且引人入胜的方式。
一些研究人员试图使用计算机算法和暴力方法来搜索冰雹猜想的反例,但到目前为止没有找到。
冰雹猜想有许多变体,每种变体都有不同的数字转换规则。一些变体已经被证明或证伪,但原猜想仍然未解决。
冰雹猜想启发了数学和计算机科学中其他类似问题的创造,例如“3x + 1”问题和“冰石序列”。
这些事实使冰雹猜想成为一个有趣且令人困惑的研究课题,特别是对于对数学和计算机科学感兴趣的孩子们来说。在Python中实现冰雹猜想是一种有趣和吸引人的方法,可以探索问题并了解更多相关信息。
def collatz(n):
count = 1
while n != 1:
count += 1
if n % 2 == 0:
n = n // 2
else:
n = 3 * n + 1
return count
# 测试函数,使用 n = 7 的例子
print("步数:", collatz(7))
这段代码中,定义了一个名为 collatz 的函数,它的输入是一个正整数 n。该函数进行 Collatz 序列变换,直到 n 到达 1,并使用 count 变量记录步数。代码然后使用 n = 7 的例子测试该函数。
您可以修改此代码并使用不同的数字进行测试,以查看序列如何演变。您还可以收集大量数字的数据,研究它们的行为和模式。这可以是一个了解 Collatz 猜想的好项目,并在好学好教少儿编程平台上提高您的 Python 技能。
下面是用Scratch实现的冰雹猜想: