iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0

今天也要讓大家來練習,只不過今天的東西會稍微難想一點,所以今天一個題目而已。那我們就開始吧

題目

今天要讓大家來練習的是考拉茲猜想,這是在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就會加一。最後打印。


上一篇
Python 練習
下一篇
Python Time套件
系列文
一起來探索Python語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言