python collatz猜想_小学生也能看明白的猜想——Collatz猜想(3n+1)

任意取一个正整数n,如果n是一个偶数,则除以2得到n/2;

如果n是一个奇数,则乘以3加1得到3n+1,重复以上操作,我们将得到一串数字。

例如,取一个正整数n=3,3是奇数,得到3*3+1=10,10是偶数,得到10/2=5。重复上述操作,我们将得到一串数字:

3->10->5->16->8->4->2->1->

继续从1开始操作,我们得到1->4->2->1,再次回到了1。

从而将出现了1->4->2->1的循环。

因此Collatz猜想:任何正整数n参照以上规则,都将回归1.

我们再看一个例子。取n=19,我们得到如下一串数字:

19->58->29->88->44->22->11->34->17->52->26->13->40->20->10->5->16->8->4->2->1->

今天我们借助于计算机程序,对于2^60以下的正整数,collatz猜想都是正确的。有些数字需要经历很长的路才会回归1,例如n=27,需要经历111步:

27->82->41->124->62->31->94->47->142->71->214->107->322->161->484->242->121->364->182->91->274->137->412->206->103->310->155->466->233->700->350->175->526->263->790->395->1186->593->1780->890->445->1336->668->334->167->502->251->754->377->1132->566->283->850->425->1276->638->319->958->479->1438->719->2158->1079->3238->1619->4858->2429->7288->3644->1822->911->2734->1367->4102->2051->6154->3077->9232->4616->2308->1154->577->1732->866->433->1300->650->325->976->488->244->122->61->184->92->46->23->70->35->106->53->160->80->40->20->10->5->16->8->4->2->1->

The number of steps of 27 is 111. 在回归1的途中,最大值为9232.

今天Collatz猜想(也称为3n+1问题或冰雹猜想)仍未得到解决,3n+1问题是培养数字敏感性和探索数字世界奥秘的好问题,同时也是练习程序思维的好问题。

附Python程序代码

def c(n):

def rule(n):

if n==1:

return 1

elif n%2==0:

return n//2

else:

return 3*n+1

s=0

print(n,end='->')

i=n

while i!=1:

i=rule(i)

s=s+1

print(i,end="->")

print('\n The number of steps of {} is {}.'.format(n,s))

执行此代码,例如输入c(10)得到如下结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值