自学Python:角谷猜想

什么是角谷猜想?

角谷猜想的内容是任给一个自然数,若为偶数则除以2,若为奇数则乘以3再加1,这样得到一个新的自然数之后再按照前面的法则继续演算,若干次以后得到的结果必然为1。在数学文献里,角谷猜想也常常被称为“3X+1问题”。

角谷猜想在西方常被称为西拉古斯猜想,据说这个问题首先是在美国的西拉古斯大学被研究的,而在东方,这个问题则由将它带到日本的日本数学家角谷静夫的名字来命名,故被称为角谷猜想。

那么问题来了,请用python编程来验证角谷猜想。

先通过1个实例来理解角谷猜想的含义。

取自然数n=6,则根据角谷猜想,有:6→3→10→5→16→8→4→2→1。

最终结果为1,则n=6时角谷猜想成立。

下面直接上代码:

########################

if __name__ == "__main__":

    count = 0

    n = int(input("请输入一个自然数:"))

    while n != 1:  # 当n=1时终止循环

        if n % 2 == 1:  # 若n为奇数,则乘以3加1

            n = n * 3 + 1

            count += 1

            # 输出执行步骤

            print("[%d]: %d * 3 + 1 = %d " %(count, (n-1)//3, n))

        else:

            n //= 2  # 若n为偶数,则直接除以2

            count += 1

            print("[%d]: %d / 2 = %d " %(count, 2 * n, n))  # 输出执行步骤

########################

执行结果如下:

请输入一个自然数:2256

[1]: 2256 / 2 = 1128

[2]: 1128 / 2 = 564

[3]: 564 / 2 = 282

[4]: 282 / 2 = 141

[5]: 141 * 3 + 1 = 424

[6]: 424 / 2 = 212

[7]: 212 / 2 = 106

[8]: 106 / 2 = 53

[9]: 53 * 3 + 1 = 160

[10]: 160 / 2 = 80

[11]: 80 / 2 = 40

[12]: 40 / 2 = 20

[13]: 20 / 2 = 10

[14]: 10 / 2 = 5

[15]: 5 * 3 + 1 = 16

[16]: 16 / 2 = 8

[17]: 8 / 2 = 4

[18]: 4 / 2 = 2

[19]: 2 / 2 = 1

________________END______________

你可能感兴趣的:(自学Python:角谷猜想)