Python笔记 | 角谷猜想

文章目录

0x00 前言

0x01 问题分析

0x02 代码设计

0x03 代码流程

0x04 完整代码 

0x05 运行效果 

0x06 参考文献

0x07 总结


0x00 前言

       角谷猜想也称 3x+1 猜想,最早是流传于美国西拉古斯大学,不久后一位名为角谷静夫的日本数学家把它带到亚洲,故称角谷猜想。角谷猜想是任意一个自然数 N ,如果这个自然数 N 为偶数则除以 2 ,如果这个自然数 N 为奇数则乘以 3 再加 1 ,如此反复结果必然为最小自然数 1

         

         

0x01 问题分析

关于角谷猜想的迭代公式:

Xn+1=\frac{3Xn+1}{2^{m}}\rightarrow 1

        其中 X 是奇数, m 是让 3X+1 中的偶数析出并抵消并且让整个分数成为奇数,直到等于 1 为止。

        

根据迭代公式给出以下示例:

N=3→10→5→16→8→4→2→1
N=4→2→1
N=5→16→8→4→2→1
N=9→28→14→7→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
N=12→6→3→10→5→16→8→4→2→1

         

         

0x02 代码设计

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

        代码解析:使用 int() 函数以整数形式获取用户输入。

        

while n != 1:

        代码解析:构造 while 循环并设置循环规则,当 n=1 时退出循环。

        

if n % 2 == 1:
      n = n * 3 + 1
      print(f'{n} ', end = ' ')

         代码解析:使用 n % 2 ==1 用来判断用户输入的数是否为奇数,如果是则乘以 3 1 ,并打印当前步骤。 f'...' 方法类似 .format 方法,用于格式化输出。 end = ' ' 表示不换行输出。

         

else:
      n //= 2
      print(f'{n} ', end = ' ') 

        代码解析:如果用户输入的数不为奇数,那么直接除以 2 ,并打印当前步骤。

         

         

0x03 代码流程

Python笔记 | 角谷猜想_第1张图片 代码运行流程图

         

         

0x04 完整代码 

n = int(input("输入一个自然数:"))
while n != 1:
      if n % 2 == 1:
            n = n * 3 + 1
            print(f'{n} ', end = ' ')
      else:
            n //= 2
            print(f'{n} ', end = ' ') 

         

         

0x05 运行效果 

请输入一个自然数:9
28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

Process finished with exit code 0  

         

         

0x06 参考文献

[1].百度百科. 3x+1猜想[EB/OL]. [2022-09-23]. https://baike.baidu.com/item/3x%2B1%E7%8C%9C%E6%83%B3/5833803#2.

         

         

0x07 总结

文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。

你可能感兴趣的:(Python,python,算法)