Python 练习

今天也要让大家来练习,只不过今天的东西会稍微难想一点,所以今天一个题目而已。那我们就开始吧

题目

今天要让大家来练习的是考拉兹猜想,这是在1930年代,德国汉堡大学的学生考拉兹,研究任何正整数用了某些公式,最後结果都会变成1,那我来说明一下那些公式。首先先设定一个数字n,假如n是偶数,就要除2; 假如n是奇数,就要乘以3加1。之後会得到一个新的数字,然後继续再用刚刚的算法一直重复计算,之後一定会变成1。

例如:
13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

再来我要介绍考拉兹生命周期,从以上的例子来看,13的考拉兹生命周期是10,因为包括13到1的数字有10个。同理,8的考拉兹生命周期就是4。

再来是我们今天要练习的内容,就是先问使用者n是多少,然後求n的考拉兹生命周期。

https://ithelp.ithome.com.tw/upload/images/20210914/201404686Qg91wqHFG.png

n=int(input())
a=1
while True:
    if n==1:
        break
    elif n%2==0:
        n=n/2
        a=a+1
    elif n%2==1:
        n=3*n+1
        a=a+1
print(a)

首先一开就是先让使用者输入,再来第二行是考拉兹生命周期,由於n本身也会算是周期的一个数字,例如1的考拉兹生命周期是1,所以就先把a设为1。再来是回圈的部分,由於这是未知周期的回圈,所以我使用while。之後是回圈里面,那首先我先判断n是否为1,是就停止回圈。然後就是判断奇数偶数,然後每次数字变换a就会加一。最後打印。


<<:  Day 4: Nativescript UI - Part2 - Components

>>:  Day14 - Kotlin的类别

[Day 3] SRE - Log写好一点,对团队好一些

LogSeverity 有在写Log的人都知道Log需要被分级,而分级对於问题的除错,是很重要的,当...

DAY 14 Big Data 5Vs – Variety(速度) Glue(2) ETL

接续基本元件介绍:Glue ETL功能栏中的可以建立ETL Job、Workflow和Bluepri...

番外篇(1)一起来做计算机!

距离完赛已经过了一阵子,前天想自己刻刻看计算机,拆解任务、实际执行後才发现知识量不足,导致无法顺利完...

Flutter基础介绍与实作-Day29 旅游笔记的实作(10)

今天要写的是隐藏式选单的第三个"登出"的选项,原本这格写的是使用说明,後来想想好...

Day27-介接 API(番外篇 II)Dialogflow ES 之 Intents 与 Entities

大家好~ 今天来一起实作 Intents 与 Entities 吧! CREATE INTENT 在...