python 实现collatz sequence考拉兹序列算法

news/2024/9/24 22:45:42/

collatz sequence考拉兹序列算法介绍

考拉兹序列(Collatz sequence),也被称为3n+1序列或奇偶归一猜想(3x+1 problem),是一个数学中的未解问题,由德国数学家Lothar Collatz在1937年提出。

考拉兹序列的算法很简单:

选择一个正整数n。
如果n是偶数,则n除以2,即n = n/2。
如果n是奇数,则n乘以3再加1,即n = 3n + 1。
重复步骤2和3,直到n等于1。

这个序列的有趣之处在于,对于所有已知的正整数,它最终都会回到1。然而,尽管已经针对非常大的数字进行了测试,但这个猜想尚未被证明对所有正整数都成立。

以下是考拉兹序列算法的一个Python实现示例:

def collatz_sequence(n):sequence = [n]  # 初始化序列,包含起始数字while n != 1:if n % 2 == 0:n = n // 2else:n = 3 * n + 1sequence.append(n)  # 将下一个数字添加到序列中return sequence# 示例
n = 13
print(collatz_sequence(n))

在这个示例中,collatz_sequence函数接受一个正整数n作为输入,并返回一个列表,其中包含从n开始的考拉兹序列的所有元素,直到序列到达1。对于n = 13,该函数的输出将是[13, 40, 20, 10, 5, 16, 8, 4, 2, 1],显示了从13开始直到1的考拉兹序列。

collatz sequence考拉兹序列算法python实现样例

Collatz序列,也被称为考拉兹序列,是指通过以下运算规则生成的数列:对于任意正整数n,如果n是偶数,则将其除以2;如果n是奇数,则将其乘以3再加1。不论初始值是多少,最终都会收敛到1。

以下是使用Python实现Collatz序列的代码:

def collatz_sequence(n):sequence = [n]while n != 1:if n % 2 == 0:n = n // 2else:n = 3 * n + 1sequence.append(n)return sequence# 测试示例
n = 6
sequence = collatz_sequence(n)
print(sequence)

这段代码定义了一个函数collatz_sequence,它接受一个正整数n作为输入,并返回生成的Collatz序列。在函数内部,通过循环迭代进行计算,直到n的值为1为止。在每一次迭代中,根据n的奇偶性来更新n的值,并将更新后的n添加到序列中。最终返回生成的序列。

上述代码中的测试示例为n=6,运行结果为:

[6, 3, 10, 5, 16, 8, 4, 2, 1]

这是n=6对应的Collatz序列。


http://www.ppmy.cn/news/1529996.html

相关文章

9.20-使用k8s部署wordpress项目

部署wordpress项目 部署mariadb # 启动docker进程systemctl start docker​# 拉取三个镜像​docker pull nginx:alpinedocker pull wordpress:latestdocker pull mariadb:latest​# 保存三个镜像​cddocker save -o wordpress.tar wordpress:latestdocker save -o mariadb.tar…

【数据结构初阶】链式二叉树接口实现超详解

文章目录 1. 节点定义2. 前中后序遍历2. 1 遍历规则2. 2 遍历实现2. 3 结点个数2. 3. 1 二叉树节点个数2. 3. 2 二叉树叶子节点个数2. 3. 3 二叉树第k层节点个数 2. 4 二叉树查找值为x的节点2. 5 二叉树层序遍历2. 6 判断二叉树是否是完全二叉树 3. 二叉树性质 1. 节点定义 用…

virtualbox中的网络模式,网络设置,固定IP

virtualbox关于网络设置的文档:https://www.virtualbox.org/manual/topics/networkingdetails.html#networkingdetails DHCP Dynamic Host Configuration Protocol:动态主机配置协议,是专门用来给网络中的节点分发IP地址,确保每…

【个人博客hexo版】hexo安装时会出现的一些问题

项目场景: 项目场景:在完成了GitHub仓库和git的连接之后,就要新建一个文件夹(例如hexo blog)进行下一步hexo的使用 问题描述 例如:如图所示 原因分析: 这些error不用看它到底是什么&#xf…

二.Oracle每周运维操作

目录 2.1、监控数据库对象的空间扩展情况 2.2、监控数据量的增长情况 2.3、系统健康检查 2.4、 检查无效的数据库对象 2.5、检查不起作用的约束 2.6、检查无效的trigger 2.7 数据库补丁更新 解释: 操作步骤: 2.1、监控数据库对象的空间扩展情况 …

C语言中的typedef简介

type简介 在C语言中,typedef 是用于为现有的数据类型定义一个新的类型名称的关键字。它的作用是为类型取一个别名,使代码更简洁、更易于理解。 基本语法 typedef 原始类型 新类型名; 示例 为 int 类型定义一个别名: typedef int INTEGER…

【VUE3.0】动手做一套像素风的前端UI组件库---Button

目录 引言做之前先仔细看看UI设计稿解读一下都有哪些元素:素材补充 代码编写1. 按钮四周边框2. 默认状态下按钮颜色立体效果3. 鼠标移入聚焦4. 模拟鼠标点击效果 组件封装1. 按类型设置颜色2. 设置按钮禁用状态3. 处理一个bug4. 看下整体组件效果5. 组件完整代码6. …

hbase merge工具

在hbase中,表中可能会存在很多小的region,如果不需要那么多小的region,可以将他们就行合并。 代码的逻辑是将相邻的两个小region进行合并,需要注意以下几点 1、当个region不宜过大,如果两个合并后超过当个region 的最…