回上方

(14)考拉茲猜想

任意數使用以下公式可以導出一系列數字,而此數列最終會結束於1(目前尚未被證明)

n → n/2 (n是偶數)
n → 3n + 1 (n是奇數)

例如 n=13,可以導出以下10個數字,我們可以稱13這個數字的考拉茲生命週期是10。

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

【最後目標】

在小於一百萬的數字中,哪一個數字的考拉茲生命週期最長?


練習1:使用遞迴印出10到1的數字

1
2
3
4
5
6
7
8
def count_down(number):
    print(number)
    if number == 1:
        return 1
    else:
        count(number-1)

count_down(10)





練習2:數字13的考拉茲數字串

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def collatz(number):
    global numbers
    numbers.append(number)
    if number == 1:
        return 1
    elif number % 2 == 0:
        collatz(number//2)
    else :
        collatz(3*number+1)

numbers = []
collatz(13)
print(numbers)

練習3:計算串列中元素個數

1
2
numbers = [1,2,3,4,5,6,7,8,9,10]
print(len(numbers))

本單元課程自2018.4.23日起已被瀏覽 795