《角谷猜想》
所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则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语句中。