2017年12月23日 星期六

a023: 3N+1 (**)

a023: 3N+1 (**)

'''
有一個數列是這樣的:

第一項是一個大於一的正整數 N
如果這一項是奇數,則它的下一項是 3N+1
如果這一項是偶數,則它的下一項是 N/2
如此反覆,直到最後一項出現 1 為止
現在給你第一項的 N,請你求出這個數列有幾項,
例如第一項是3,則這個數列為:3、10、5、16、8、4、2、1,共8項。

輸入說明:
輸入一個大於1的正整數 N。
輸出說明:
請輸出以 N 為第一項的數列有幾項。

輸入1:
3

輸入2:
12
範例輸出 :

輸出1:
8

輸出2:
10

'''

X=int(input("輸入一個大於1的正整數 N > "))
Cnt=1
print(X,',',end='')

while X != 1 :
    if (X%2==0):
      X=X//2
    else:
      X=3*X+1
      
    Cnt=Cnt+1      
    print(X,',',end='')

print("共有",Cnt,"項")


=== RESTART: F:/Python_APSC/a023.py ======================
輸入一個大於1的正整數 N > 3
3 ,10 ,5 ,16 ,8 ,4 ,2 ,1 ,共有 8 項
>>> 
=== RESTART: F:/Python_APSC/a023.py ======================
輸入一個大於1的正整數 N > 12
12 ,6 ,3 ,10 ,5 ,16 ,8 ,4 ,2 ,1 ,共有 10 項
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...