|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
1. 验证角谷猜想Powered by https://fishc.com.cn
角谷猜想的内容是:任意给定一个自然数,若它为偶数则除以 2,若它为奇数则乘以 3 再加 1,得到一个新的自然数,按照这样的方法计算下去,最终的结果必将是 1。
n = int(input("请输入一个自然数:"))
for i in range(1000):
if n % 2 == 0:
print(n, "/2 = ", n // 2, sep='')
n = n // 2
else:
print(n, "*3+1 = ", n * 3 + 1, sep='')
n = n * 3 + 1
if n == 1:
break
上面是课后答案,但是我自己写的时候是没有n=n//2 和 n=n*3+1 这两句的
我不是很明白这两句代码的意义,求解答
所以你是认为 print 里面的那个n // 2和 n * 3 + 1 会被赋值给 n 还是你压根没太看懂题目
题目说的是随便取一个数,如果偶数就除以 2, 如果奇数就乘以3再加一,生成一个新的数,对新的数再进行处理
如此往复,会发现最后的结果都是 1
所以橙色那两行就是为了: 如果偶数就除以 2, 如果奇数就乘以3再加一
n // 2 是地板除法,出来的结果向下取整
比如:5 // 2 = 2 3 // 2 = 1
不论小数部分是多少,都只取整数部分
n = n // 2 就是对 n 进行地板除法,再将结果赋值给 n
n = n * 3 + 1 就是 将 n 乘以3再加1的结果赋值给 n
|
|