Python实现《角谷猜想》

 《角谷猜想》

 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则3n+1,如果是偶数,则除以2,得到的结果再按照上述规则中重复处理,最终总能得到1。 

实现目的: 

1.输入一个正整数
2.如果n为偶数,就将它变为n/2,
3.如果除后变为奇数,则将它乘3加1(即3n+1)。不断重复这样的运算,经过有限步后,必然会得到1。
4.本实例要求编写代码,计算用户输入的数据按照以上规律经多少次运算后可变为1。

逐步解析:

1.定义变量

def sum1(n):    # 定义函数
    i = 0       # 记次数
    g = n       # 存储初始数

 2.达到一定条件时跳出循环 

while n != 1:    # 等于1时跳出循环

 3.根据题意得到算法

n % 2 == 0:   # 偶数时执行
n = n / 2    # 则将它变为n/2
    
n = n * 3 + 1   # 奇数时则将它乘3加1(即3n+1)

4. 输出结果

print('%d经过%d次达到1' % (g, i))

sum1(int(input('请输入一个正整数:')))  # 调用函数

 完整代码:

def sum(n):    # 定义函数
    i = 0       # 记次数
    g = n       # 存储初始数
    while n != 1:    # 等于1时跳出循环
        if n % 2 == 0:   # 偶数时执行
            n = n / 2    # 则将它变为n/2
            i += 1       # 次数+1
        else:
            n = n * 3 + 1   # 奇数时则将它乘3加1(即3n+1)
            i += 1          # 次数+1
    print('%d经过%d次达到1' % (g, i))


sum(int(input('请输入一个正整数:')))  # 调用函数

 实现结果:

 

 

 

看到这啦,点个赞再走叭~~ 

这个写的非常好啊,感觉没啥问题

计数的i+=1在每次循环中都累计1次,所以可放在循环的第一个,没必要放在if语句中。