什么是角谷猜想?
角谷猜想的内容是任给一个自然数,若为偶数则除以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______________
网友评论