2017/7/30 Collatz conjecture

原題:

編寫一個名為collatz()的函數,它有一個名為number 的參數。如果參數是偶數,那么collatz()就打印出number // 2,并返回該值。如果number 是奇數,collatz()就打印并返回3 * number + 1。
然后編寫一個程序,讓用戶輸入一個整數,并不斷對這個數調用collatz(),直到函數返回值1(令人驚奇的是,這個序列對于任何整數都有效,利用這個序列,你遲早會得到1!既使數學家也不能確定為什么。你的程序在研究所謂的“Collatz序列”,它有時候被稱為“最簡單的、不可能的數學問題”)。

先來看看wiki上對Collatz 序列的描述

Take any positive integer n. If n is even, divide it by 2 to get n / 2. If n is odd, multiply it by 3 and add 1 to obtain 3n + 1. Repeat the process indefinitely. The conjecture is that no matter what number you start with, you will always eventually reach 1.

也就是說實際上,我們的限制條件需為正整數

答案如下:

#!/usr/bin/env python
# coding=utf-8

import sys
def collatz(number):
    if number % 2 == 0:
        return number // 2
    else:
        return 3 * number + 1

if __name__ == '__main__':
    number =input('Enter positive number: ')
    try:
        number = int(number)
        if number > 0:
            while True:
                if number != 1 :
                    print(collatz(number))
                    number = collatz(number)
                else:
                    break
        else:
            print('you need input positive number.')
    except:
        print('you need input positive number.')

隨便測試幾個數

C:\python\learn07>python collatz.py
Enter positive number: 99
298
149
448
224
112
56
28
14
7
22
11
34
17
52
26
13
40
20
10
5
16
8
4
2
1

C:\python\learn07>python collatz.py
Enter positive number: 1

C:\python\learn07>python collatz.py
Enter positive number: 0
you need input positive number.

C:\python\learn07>python collatz.py
Enter positive number: -8
you need input positive number.

C:\python\learn07>python collatz.py
Enter positive number: 8sd
you need input positive number.
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 一 對于一個準備涉足市場營銷策劃的人來講,首先市場營銷策劃的目的應該明白,很顯然是給企業帶來銷量和利潤,使企業利潤...
    任紀偉閱讀 455評論 0 0
  • 山城的美在于她隨處可見的坡,山腰或是水邊的吊腳樓。即使開車行進公路,也是在不斷地上坡下坡,更別說步行在大街小...
    0eac9291b341閱讀 446評論 6 13
  • 今日聽一個主管說手下的銷售不愿意參加公司的銷售大PK,說公司違反了勞動法不應該扣她們的PK金,想退出PK,要不就要...
    一世驚鴻閱讀 146評論 0 0
  • 22天的收獲 第一期行動營我是僅僅留意到但沒有報名,第二期我才鼓起勇氣報名,可惜石沉大海,第三期我不死心再次報名,...
    楊橘子閱讀 228評論 0 1