用Python实现冰雹猜想(3n+1猜想,角谷猜想,叙古拉猜想)的黑洞演示

目录

一、冰雹猜想的来由

二、实现方法

1、定义根据规则生成新数的函数

2、定义生成列表的函数

3、定义主函数

三、完整代码

四、部分代码分析

五、输出结果

1、输入4

2、强悍的27

总结:


前面完成两个黑洞的程序演示,下面用python实现冰雹猜想的演示,如果对前面的两个黑洞的程序演示有想法,可以参考我以前的两篇博文。

一、冰雹猜想的来由

1976年的一天,《华盛顿邮报》于头版头条报道了一条数学新闻。文中记叙了这样一个故事:

70年代中期,美国各所名牌大学校园内,人们都像发疯一般,夜以继日,废寝忘食地玩弄一种数学游戏。这个游戏十分简单:任意写出一个正整数N,并且按照以下的规律进行变换:

如果是个奇数,则下一步变成3N+1。

如果是个偶数,则下一步变成N/2。

不单单是学生,甚至连教师、研究员、教授与学究都纷纷加入 。为什么这种游戏的魅力经久不衰?因为人们发现,无论N是怎样一个数字,最终都无法逃脱回到谷底1。准确地说,是无法逃出落入底部的4-2-1循环,永远也逃不出这样的宿命。

这就是著名的“冰雹猜想”

冰雹猜想又称角谷猜想,因为是一个名叫角谷的日本人把它传到中国。

二、实现方法

1、定义根据规则生成新数的函数

#生成新数
def generate_new_number(number):
    if number % 2 == 0:
        number = number / 2
    else:
        number = number * 3 + 1
    return int(number) 

输入正整数,根据奇偶性进行相应的运算,并返回新数

2、定义生成列表的函数

#定义计算生成列表的函数
def cal_to_list(input_number):
    number_list =[]     #用于存放过程中的数值
    new_number = generate_new_number(input_number)
    number_list.extend([input_number,new_number])
    #符合条件循环,并将产生的数存入列表,以便查阅统计
    while new_number > 1:
        new_number = generate_new_number(new_number)
  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值